• Nenhum resultado encontrado

Revis˜ao da quebra de mensagens no RSA

N/A
N/A
Protected

Academic year: 2022

Share "Revis˜ao da quebra de mensagens no RSA"

Copied!
54
0
0

Texto

(1)

Revis˜ ao da quebra de mensagens no RSA

Dionathan Nakamura Orientador: Routo Terada

DCC – IME – USP

22 de Setembro de 2010

(2)

Roteiro

1 Resumo

2 Introdu¸c˜ao

3 Goldwasser, Micali e Tong [1]

4 Ben-Or, Chor e Shamir [2]

5 Referˆencias

(3)

Roteiro

1 Resumo

2 Introdu¸c˜ao

3 Goldwasser, Micali e Tong [1]

4 Ben-Or, Chor e Shamir [2]

5 Referˆencias

(4)

Resumo

Vamos apresentar os m´etodos utilizados nos algoritmos para quebra de mensagens no RSA .

Fazemos a suposi¸c˜ao da existˆencia de or´aculos para o LSB (Least Significant Bit) da mensagem.

Assim apresentaremos:

introdu¸c˜ao ao RSA e Criptografia de Chave P´ublica;

Algoritmo de Euclides Extendido;

C´alculo da inversa multiplicativa;

Algoritmo com o or´aculo para o LSB sem erros;

Divis˜ao por 2 dentro do RSA;

Algoritmo de Euclides Bin´ario;

Algoritmo de Euclides Bin´ario Modificado;

Algoritmo com o or´aculo para o LSB com erro de 25%;

Or´aculo HALF;

Simula¸c˜ao para definir paridade.

(5)

Roteiro

1 Resumo

2 Introdu¸c˜ao

3 Goldwasser, Micali e Tong [1]

4 Ben-Or, Chor e Shamir [2]

5 Referˆencias

(6)

RSA

ms ≡y mod N

, onde N=q1.q2, com q1 e q2 primos distintos.

Obs: as opera¸c˜oes s˜ao feitas dentro deZN

(7)

Criptografia de chave p´ ublica

Alice vai gerar as chaves p´ublica e privada dela, ent˜ao ela executa os seguintes passos:

escolhe primos q1 eq2 grandes e de preferˆencia pr´oximos;

calculaN =q1.q2;

escolhe ums de tal modo que gcd(s, φ(N)) = 1;

calcula o inverso de s modφ(N), que ´es−1 ≡p modφ(N), ou aindas.p ≡1modφ(N);

por fim, apaga q1 eq2, divulga (p,N) como sua chave p´ublica e mant´em em segredo sua chave privada (s,N).

Obs: φ(N) =|ZN|

(8)

Comunica¸c˜ ao

Beto quer se comunicar com Alice, ele deseja enviar a mensagem mem segredo, ent˜ao ele executa os seguintes passos:

Beto calcula y ≡mpmod N e envia y para Alice;

agora y ´e ileg´ıvel, qualquer um que interceptary nada vai saber sobrem;

Alice ent˜ao recuperam calculandom≡ysmod N;

(9)

M´ aximo divisor comum — Algoritmo de Euclides

O nome da fun¸c˜aogcd(a,b) vem do inglˆesgreatest common divisor, tamb´em conhecido como Algoritmo de Euclides:

por exemplo: gcd(9,15) = 3.

O algoritmo ´e baseado nos seguintes passos:

1 certifique quea>b, sen˜ao troque entre si;

2 quandoa´e dividido porb obt´em-se q e r;

3 a recebeb;

4 b receber;

5 volte ao passo 2;

6 repita at´e que o resto seja zero;

O GCD ´e o ´ultimo restor antes dezero.

(10)

Algoritmo de Euclides de Extendido

O Algoritmo de Euclides de Extendido,

extended gcd(a,b,&x,&y), nos retorna os coeficientex e y tal que:

ao executar: extended gcd(a,b,&x,&y);

temos a cada passo: ri =a.xi +b.yi;

O interessante aqui, ´e que sea e b s˜ao primos entre si (coprimos):

ent˜aogcd(a,b) = 1;

e no ´ultimo passo vamos ter ri = 1;

assim: 1 =a.xi +b.yi;

e o algoritmo retorna esses ´ultimos como o x e y que queremos.

(11)

Inversa multiplicativa

Quando Alice estava gerando as chaves dela, ela:

garantiu que gcd(s, φ(N)) = 1;

ou seja, s e φ(N) s˜ao coprimos.

Para calcularp, que ´e a inversa multiplicatica de s, fez:

executou: extended gcd(s, φ(N),&x,&y);

assim: 1 =s.x+φ(N).y; ent˜ao, o x ´e op desejado;

lembre que: s.p≡1modφ(N).

(12)

Preliminares

n denota o comprimento de N que ´e n=dlgNe.

Em toda a apresenta¸c˜ao consideramos quem seja relativamente primo aN, ou seja, gcd(m,N) = 1, de modo que m∈ZN. Observe que:

gcd(m,N)6= 1 ⇐⇒ gcd(RSA(m),N)6= 1 Se n˜ao fossem relativamente primos, far´ıamos

gcd(RSA(m),N) =d, ent˜ao ou d =N = 0 oud =q1 oud =q2, e seria f´acil obters.

(13)

Roteiro

1 Resumo

2 Introdu¸c˜ao

3 Goldwasser, Micali e Tong [1]

4 Ben-Or, Chor e Shamir [2]

5 Referˆencias

(14)

Or´ aculo para o LSB

Esse trabalho sup˜oem a existˆencia de um or´aculo que retorna o LSB dem dadoRSA(m):

O1(mpmod N) =

0 sem´e par, 1 sem´e ´ımpar.

(15)

Algoritmo 1

(16)

Passo 1 — divis˜ ao por 2

Nesse est´agio, queremos garantir que podemos dividir n´umeros por 2. Vamos entender a aritm´etica m´odulo N:

para os exemplos: q1 = 3 eq2= 5, logo N= 15;

40

2 = 20≡5mod 15;

observe que 19≡4mod15; (19−15 = 4) ou seja, 19 e 4 perntencem `a mesma classe lateral

(congruˆencia m´odulo N);

ent˜ao ´e de se esperar que se: 42 ≡2mod15;

ent˜ao tamb´em: 192 ≡2mod15;

agora, por exemplo, o n´umero ´ımpar 7, quanto seria

7

2 mod15?;

como 7≡22mod 15; (7 + 15 = 22)

ent˜ao: 72 ≡11mod15.

(17)

Passo 1 — inversa de 2

Todavia estamos dentro do grupo multiplicativo ZN, ou seja, a opera¸c˜ao em quest˜ao ´e a multiplica¸c˜ao e n˜ao a divis˜ao, para resolvermos isso calculamos a inversa multiplicativa de 2:

executar: extended gcd(2,15,&x,&y);

temosx = 8;

verificando: 2.8≡1mod15;

exemplo 1a: 4.8 = 32≡2mod15; (32−2∗15 = 2) exemplo 1b: 19.8 = 152≡2mod15; (152−10∗15 = 2) exemplo 2: 7.8 = 56≡11mod 15. (56−3∗15 = 11) Pontanto, para “dividir” um n´umero por 2 basta multiplic´a-lo pela inversa multiplicativa de 2 m´odulo N.

(18)

Passo 1 — prova da divis˜ ao por 2

SejaI a inversa multiplicativa de 2, isto ´e, I.2≡1mod N.

Seja x2 =metade, ou seja, 2.metade=x.

Por hip´otese, I.x≡metade mod N.

Ent˜ao, para dividirx por 2:

I.x ≡ metade mod N [.(2)]

2.I.x ≡ 2.metade mod N

1.x ≡ x mod N c.q.d.

(19)

Algoritmo 1

(20)

Passo 1 — divis˜ ao por 2 cifrado

Sejay =mpmod N. N´os queremos dividirm por 2 e n˜aoy por 2.

Por isso, a inversa multiplicativaI deve ser relativa a 2pmod N. Seja m2 =metade, ou seja, 2.metade =m.

Por hip´otese, I.y ≡metadepmod N.

Vejamos:

I.y ≡ metadepmod N [.(2p)]

(2p).I.y ≡ (2p).(metadep)mod N 1.y ≡ (2.metade)pmod N

1.y ≡ mpmod N c.q.d.

(21)

Algoritmo 1

(22)

Passo 2 — caso par

Suponhamos que o r em alguma itera¸c˜aoi seja par. Por exemplo, r = 8;

A transforma¸c˜ao feita ´e: r ←r.I mod N. Ou seja, uma divis˜ao por 2.

Em computa¸c˜ao, ´e f´acil enxergar que dividir por 2 ´e o mesmo que derlocar um bit `a direita.

Assim, r teve seu valor atualizado de 8[1000] para 4[100].

Em ANS ´e armazenada a paridade do novor.

No passo 3 ´e f´acil enxergar a transforma¸c˜ao inversa.

(23)

Passo 2 — caso ´ımpar

Suponhamos que o r em alguma itera¸c˜aoi seja ´ımpar;

por exemplo, r= 13[1101], como proceder para extrair o 1 da direita?;

primeiro ´e feita a opera¸c˜aoN−r;

comoN er s˜ao ´ımpares, o resultado anterior ´e par;

depois, como o resultado ´e par, ´e feita a divis˜ao por 2.

Conforme os passos anteriores, fa¸camostmp= (N−r)/2. Ent˜ao, para obterr a partir de tmp:

N−2.tmp = N−2.((N−r)/2)

= N−(N−r)

= N−N+r

= r

(24)

Algoritmo 1

(25)

Passo 3

Observe que as requisi¸c˜oes ao or´aculo s˜ao feitasn vezes;

e ainda, a cada itera¸c˜ao, apenas um bit ´e adicionado;

vamos ver em exemplo.

(26)

Exemplo

SejaN = 37.31 = 1147, n= 11, m7 = 81: (m= 107) i r[i] ANS[i] t(i)

1 81 1 00001101011

2 313 0 1000001000

3 334 0 100000100

4 1060 0 10000010

5 761 1 1000001

6 236 1 011101

7 34 1 01111

8 627 0 0110

9 211 1 011

10 79 0 00

11 601 0 0

(27)

Exemplo detalhado

i m[i] bits(m) ANS[i] t(i)

1 107 1101011 1 00001101011

2 520 1000001000 0 1000001000

3 260 100000100 0 100000100

4 130 10000010 0 10000010

5 65 1000001 1 1000001

6 541 1000011101 1 011101

7 303 100101111 1 01111

8 422 110100110 0 0110

9 211 11010011 1 011

10 468 111010100 0 00

11 234 11101010 0 0

(28)

An´ alise

Sejau[i]∈ZN tal que u[i]smod N =r[i].

Sejav(i)=B(u[i]).

Temos que provar que: v(i)=w(i)∗t(i) para algum w(i). Em particular,v(1) =w(1)∗t(1) para algum w(1). Mas

|v(1)|=|t(1)|=n.

Assim,v(1)=t(1) e m=u[1] =M(t(1)).

De (3) do algoritmo, claramente a afirma¸c˜ao ´e v´alida parai =n.

A prova ´e feita por indu¸c˜ao.

(29)

An´ alise (cont.)

Para o caso onde ANS[i−1] = 0:

r[i] =r[i−1].I mod N [.(2s)]

r[i].2s =r[i−1].1mod N r[i−1] =r[i].2smod N , e assim:

u[i−1] =u[i].2 . Conseq¨uentemente:

v(i−1) =v(i)∗0 =w(i)∗t(i)∗0 =w(i−1)∗t(i−1)

(30)

An´ alise (cont.)

Para o caso onde ANS[i−1] = 1:

r[i] = (N−r[i −1]).I mod N [.(2s)]

r[i].2s =N−r[i−1]mod N r[i −1] =N−r[i].2smod N

=N−(u[i].2)s mod N

= (N−u[i].2)s mod N , e assim:

u[i−1] =N−u[i].2 . Conseq¨uentemente:

v(i−1)=w(i−1)∗(B(N)(−)(t(i)∗0)) =w(i−1)∗t(i−1)

(31)

Roteiro

1 Resumo

2 Introdu¸c˜ao

3 Goldwasser, Micali e Tong [1]

4 Ben-Or, Chor e Shamir [2]

5 Referˆencias

(32)

Algoritmo de Euclides Bin´ ario

Esse algoritmo ´e baseado nas seguintes id´eias de [3] (Knuth — The Art of Computer Programming):

se|b|e|c|s˜ao ambos pares, ent˜aogcd(b,c) = 2.gcd(b2,c2);

se|b|´e par e|c|´ımpar, ent˜ao gcd(b,c) =gcd(b2,c);

se|b|e|c|s˜ao ambos ´ımpares, ent˜ao gcd(b,c) = 2.gcd(b+c2 ,b−c2 );

adicionalmente, no ´ultimo caso, ou b+c2 ou b−c2 ´e divis´ıvel novamente por 2.

(33)

GCD bin´ ario modificado

Sabendo dessas propriedades, podemos criar um novo GCD bin´ario:

Inicialize com entradasb ec, repita b←b/2 ec ←c/2 at´eb e c serem ´ımpares.

La¸co b ← b+c2 ,c ← b−c2 . Elimine potˆencias de 2 at´e que sobre apenas n´umeros ´ımpares.

Termine quando ocorrer b= 1,−1,0 ou c = 1,−1,0.

E poss´ıvel verificar que ap´´ os no m´aximo dois passos no la¸co, max(|b|,|c|) ´e reduzido por um fator de ao menos 3/4.

(34)

Or´ aculo para LSB que acerta em pelo menos 75%

Esse trabalho sup˜oem a existˆencia de um or´aculo que retorna o LSB dem dadoRSA(m) com taxa de acerto de 3/4 +:

O2(mpmod N) =

0 sem´e par, 1 sem´e ´ımpar.

(35)

Or´ aculo para dizer em que metade do conjunto est´ a

Esse or´aculo (Half) diz em que metade do conjunto a mensagem est´a:

H(msmod N) =

0 sem<N/2

1 sem>N/2

Na verdade um or´aculo para o LSB ´e equivalente a um para o Half, pois um pode simular o outro.

(36)

Equivalˆ encia entre os or´ aculos para LSB e Half

LSB(2.x) = 0 ⇐⇒ HALF(x) = 0 LSB(x) = 0 ⇐⇒ HALF(I.x) = 0 Onde I ´e a inversa multiplicativa de 2mod N.

(37)

Simulando Half a partir do LSB

LSB(2.x) = 0 ⇐⇒ HALF(x) = 0

0 N/2 N

x 2.x

0 N/2 N

x 2.x

2.x-N

(38)

Simulando LSB a partir de Half

SejaI ´e a inversa multiplicativa de 2mod N.

LSB(x) = 0 ⇐⇒ HALF(I.x) = 0

0 N/2 N

x I.x

par

0 N/2 N

I.x x

par

0 N/2 N

x+N (x+N)/2

x

ímpar I.x mod N

0 N/2 2.N

x+N (x+N)/2

x

ímpar I.x mod N

(39)

Estrutura multiplicativa do RSA

Suponha que ´e dada a mensagem criptografadaRSA(m);

escolhemos um valor i;

pela estrutura multiplicativa do RSA ´e poss´ıvel calcular RSA(i.m).

RSA(i.m) = RSA(i).RSA(m) (mod N)

= ip.mpmod N

= (i.m)pmod N

= RSA(i.m)mod N

(40)

Propriedade sobre Half

SejaA(x) = 2.

Nx12

. Ent˜ao para i,j aleat´orios:

A(x) =Pr[i ≡i+x]

A(x) =Pr[j.x≡(j + 1).x]

(41)

Caso de probabilidade alta

0 x pequeno N/2 N

0 N/2 N

x grande

0 N/2 N

0 N/2 N

(42)

Caso de probabilidade baixa

0 x N/2 N

0 N/2 N

0 N/2 x N

0 N/2 N

(43)

Fun¸c˜ ao a(x)

Seja

Sx ={j|H acerta em j.x} ∩ {j|H acerta em (j + 1).x}

Ent˜ao|Sx| ≥N(1/2 + 2.).

Seja

a(x) = |{j|j.x ≡(j + 1).x}| ∩Sx

N

Ent˜ao, para todox,|a(x)−A(x)| ≤1/2−2.

(44)

Caso da moeda milagrosa

Considere o caso hipot´etico:

vocˆe vai participar de um concurso de perguntas e respostas;

as perguntas s˜ao de 2 alternativas, sim e n˜ao;

vocˆe foi agraciado por um feiticeiro que te deu uma moeda milagrosa;

toda vez que vocˆe estiver diante de uma pergunta, ao jogar a moeda ela te d´a a resposta certa com 75% de acerto;

ent˜ao vocˆe joga a moeda e obt´em a resposta SIM;

mas essa resposta tem 25% de chance de estar errada;

o que vc faz?

para assegurar a resposta certa, vocˆe por exemplo, vc poderia jogar a moeda 1.000 vezes;

pela Lei dos Grande N´umeros, mais ou menos, 750 vezes a moeda vai cair do lado da resposta certa.

(45)

Lei dos Grande N´ umeros

Seja a m´edia amostral:

Xn = 1

n(X1+...+Xn)

Ent˜ao a m´edia amostral converge para o seu meio:

Xn→µ para n→ ∞

(46)

Simula¸c˜ ao

quando fazemos uma consulta `a HALF n˜ao temos como saber se a resposta ´e verdadeira;

a resposta certa vai depender do or´aculo para LSB;

o autor considera que o ´oraculo ´e determin´ıstico;

ou seja, h´a determinados pontos do conjunto em que o or´aculo sempre falha;

nos pontos restantes, ele sempre acerta;

por exemplo, para umx pequeno comox = 3;

este pode ser um ponto onde o or´aculo sempre falha;

ent˜ao o caso ´e diferente da moeda milagrosa;

n˜ao importa quantas vezes se consulte HALF, sempre vai retornar TOP.

(47)

Fun¸c˜ ao s (x )

Sejas(x) uma aproxima¸c˜ao para a(x) obtida por amostragem, ou seja, pegando independentementej’s e contando quantos Hd´a a mesma resposta paraRSA(j.x),RSA((j + 1).x).

Pela lei fraca dos grandes n´umeros, pegando polinomialmente (em−1,n) v´arios pontos s˜ao suficientes para que

|s(x)−a(x)|< com alta probabilidade (Pr >1− 1

lg3N).

Ent˜ao com alta probabilidade, para todox, temos:

a(x) = |{j|j.x ≡(j + 1).x}| ∩Sx

N

|a(x)−A(x)| ≤1/2−2

|s(x)−A(x)| ≤ |s(x)−a(x)|+|a(x)−A(x)| ≤1/2−

(48)

Escolha inicial

SejaI=

N.2 ,N.2

eJ = N2 +I, ent˜ao:

x ∈I⇒A(x)≥1−

2 ⇒s(x)> 1 2 x∈J⇒A(x)≤

2 ⇒s(x)< 1 2

Assim, a paridade pode ser avaliada e vamos poder usar nosso GCD bin´ario modificado:

|x|par⇒ x 2 ∈I

|x|´ımpar⇒ x 2 ∈J

(49)

Definindo paridade

|x|par⇒ x 2 ∈I

|x|´ımpar⇒ x 2 ∈J

0x par N/2 N

0 N/2 N

(x+n)/2 x+N

x ímpar

(50)

Descri¸c˜ ao do Algoritmo

Dado RSA(m), pegue aleatoriamentei,j at´e ambos satisfazerem s(i.m),s(j.m)>1/2:

Inicialize fa¸ca b←i.m,c ←j.m. Enquantos(2−1.b)> 12 fa¸ca b ←2−1.b (e similarmente parac).

La¸co b ← b+c2 ,c ← b−c2 . Elimine potˆencias de 2 at´e que sobre apenas n´umeros ´ımpares.

Termine se mais de lg N fatores de 2 forem encontrados, aborta e recome¸ca; se mais de 2.log4/3N itera¸c˜oes ocorrerem dentro do la¸co, aborta e recome¸ca. Se b= 0 ouc = 0 recome¸ca. Se b = 1,−1 ou c = 1,−1, use os coeficientes para representar 1 =k.m e assim recuperarm=k−1mod N. Verifique a resposta aplicando RSA.

(51)

Como a chave ´ e recuperada

Suponha que ao final temos b final = 1;

no in´ıcio t´ınhamos b inicial =i inicial.m;

conforme b sofria altera¸c˜oes, o algoritmo faz as mesmas opera¸c˜oes comi;

se ao finalb final = 1 =i final .m, ent˜ao RSA(b final) = 1;

ora se: i final .m≡1mod N;

ent˜aoi final ´e a inversa multiplicativa de m;

ent˜ao, usandoi final no Algoritmo de Euclide Estendido, recuperamosm;

o mesmo pode ser similarmente executado prac final ej final.

(52)

An´ alise

A escolhas iniciais estar˜ao dentro deI com probabilidade≥2. Ser˜ao relativamente primos com probabilidade ≥ π6.2

Ser˜ao relativamente primos sem erro com probabilidade ≥ 6.π22 O algoritmo executa com alta probabilidade de sucesso e sem nenhum ´unico erro.

(53)

Roteiro

1 Resumo

2 Introdu¸c˜ao

3 Goldwasser, Micali e Tong [1]

4 Ben-Or, Chor e Shamir [2]

5 Referˆencias

(54)

[1] Shafi Goldwasser, Silvio Micali, and Po Tong.

Why and how to establish a private code on a public network (extended abstract).

In FOCS, pages 134–144, Chicago, Illinois, November 1982.

IEEE.

[2] M. Ben-Or, B. Chor, and A. Shamir.

On the cryptographic security of single RSA bits.

In ACM Symposium on Theory of Computing (STOC ’83), pages 421–430, Baltimore, USA, April 1983. ACM Press.

[3] D. Knuth.

The Art of Computer Programming V.4.

Addison-Wesley, 1969.

Referências

Documentos relacionados

Este Contrato tem por objeto aquisição e fornecimento parcelado de material médico/hospitalar para ' atender as necessidades da secretaria municipal de saúde de Itabaiana, estado

b) Execução dos serviços em período a ser combinado com equipe técnica. c) Orientação para alocação do equipamento no local de instalação. d) Serviço de ligação das

No comércio ambulante de alimentos, a ausência ou ineficiência de vigilância sanitária e ambiental, bem como a falta de higiene pessoal e de capacitação para

configuração Scan EPSON. Clique no ícone Digitalizar. Você verá uma janela do Epson Scan como esta:.. Selecione o tamanho original do documento como a configuração de

Comproporcionamento: Ocorre quando duas espécies químicas que contém o mesmo elemento tem sua variação dirigida para apenas uma outra espécie.. Exemplo: 5KBr + KBrO 3 + 3H 2 O 3Br 2

A despeito do presente estudo voltar-se para a cooperação técnica em saúde, a qual prioriza, conforme a estratégia da cooperação Sul-Sul estruturante em saúde, a estruturação

Esta locução, já escrita sem hífen antes do Novo Acordo Ortográfico, é muito utilizada para indicar uma pessoa que está não está fazendo nada, que não tem nada

Após extração do óleo da polpa, foram avaliados alguns dos principais parâmetros de qualidade utilizados para o azeite de oliva: índice de acidez e de peróxidos, além