Você está na página 1de 55

CRIPTOGRAFIA

SEGURANÇA DE DADOS
3

Routo Terada
www.ime.usp.br/~rt
Depto. de C. da Computação - USP
Resumo
 Modelo Diffie-Hellman de cripto de chave pública (1976)
 RSA: Rivest-Shamir-Adleman (1978)
 Problema da Fatoração
 Algoritmo de teste de primalidade
 Criptossistema híbrido (KEM - Key Encapsulation
Module)
 Computador quântico

2
Simétrica NÃO permite
(DES,AES,etc.) Assinatura
+ rápido

cripto

Permite
Assimétrica
Assinatura
(RSA,ElGamal,etc.)
+ lento
Por quê é importante estudar e implementar criptografia
simétrica?  resp. de um aluno?

3
DH

ALICE BETO

Chave Chave
PB pública SB particular
do Beto
do Beto

Intruso

(1) É computacionalmente inviável calcular SB a partir do conhecimento de PB


(2) É computacionalmente inviável “abrir o envelope” sem conhecer SB, mas é
fácil “fechar o envelope” com a chave PB

4
DH

ALICE BETO

Chave Chave
PB pública SB particular
do Beto
do Beto

Intruso
Conseqüência das duas propriedades:
Só Beto pode “abrir o envelope” pois só ele conhece a chave particular.
Isto é, há garantia de autenticidade do destinatário.

5
Idéia da criptografia de chave pública
PKI - Public Key Infrastructure (mundial), ICP - Brasil (Infra
de Ch. Pub.)
Diffie-Hellman 1976
1. Beto calcula (por hipótese, rapidam/) o par p B , s B ,
chaves inversas entre si, e publica p B (Certificado
Digital), e guarda s B em memória segura
2. Alice idem: p A , s A 
3. Autoridade Certificadora - AC - idem: p AC , s AC 
Como Alice envia info x para Beto:
1. “Pega” p B do Cert.Dig. do Beto e criptografa p B x  y e
envia y para Beto
2. Beto calcula s B y  s B p B x  x. Por quê  x? 
6
sortear um aluno

7
Propriedade chamada “Autenticação do
transmissor/receptor”:
Alice sabe (garantia) que só o Beto verdadeiro/autêntico
consegue recuperar x. Por quê?  sortear um aluno
Beto sabe que a Alice verdadeira enviou y? Por quê?  sortear
um aluno

8
DH
ALICE BETO

Chave
Chave
SA PA pública
particular
da
da Alice
Alice

Intruso

Propriedade adicional (terceira propriedade):


(3) É possível aplicar “fechar o envelope”com a chave particular SA
e “abrir” com a chave pública PA

9
DH
ALICE BETO

Chave
Chave
SA PA pública
particular
da
da Alice
Alice

Conseqüência importante:
Beto sabe que só a Alice verdadeira pode ter enviado o envelope pois
ele o abriu com a chave pública da Alice: autenticação do remetente
É análogo a Alice ter “assinado” eletronicamente o envelope.
(observe que senha ou DES não autentica o remetente; por quê?)

10
Não-repúdio DH
ALICE BETO

Chave
Chave
SA PA pública
particular
da
da Alice
Alice

Outra conseqüência importante (não-repúdio):


Alice não pode negar que tenha enviado, pois Beto usou a chave
pública da Alice para abrir: não-repúdio da informação
É análogo a Alice ter “assinado” um cheque.
(observe que senha ou DES não possui esta propriedade; por quê?)

11
Hipóteses (Modelo Diffie-Hellman)
1. A chave pública é inversa da secreta, e vice-versa
2. Aplicar uma chave pública ou secreta é computacionalm/
rápida, fácil.
3. Aplicar uma chave secreta é computacionalm/ difícil,
demorada, se não conhece a chave secreta. Daí o nome
“trapdoor”, “ratoeira”, “armadilha”, etc.
4. Calcular a chave secreta é computacionalm/ difícil,
demorada (mesmo conhecendo, obviam/, a chave
pública).
5. Possível aplicar uma chave secreta sem aplicar a
respectiva chave pública.

12
Assinatura digital
1. Beto calcula s B x  y e envia para Alice
2. Alice “pega” p B e calcula p B y  p B s B x  x
Alice sabe que só o Beto verdadeiro enviou y. Por quê?
y é chamado Assinatura Digital do Beto sobre x.
Alternativa
No caso de x ser um texto (contrato, lei, decreto, diploma,
boleto, etc.), o par x, y é gravado ou impresso. junto com P B .
Então:
1. Qualquer pessoa verifica se y foi assinado pelo Beto
verdadeiro, ou seja, assinatura não é falsa (“Autenticação
de Assinatura”). Como consegue?

13
2. Qualquer pessoa verifica se x não foi modificado
(“Integridade de Info”). Como consegue?
Certificado Digital (ICP-Brasil)

14
(A) EmpCert cadastra cada Pessoa Física - PeFis - usuária do sistema.
(B) EmpCert assina a chave pública - ChPub - de cada PeFis.
Obs.: a chave pública da EmpCert é distribuída previamente, e é universal

Empresa Certificadora - EmpCert


Obs.: seguir roteiro (1) (2) ... (5)
(“cartório”)

(1) Usuário A recebe um


documento eletrônico DOC de
um usuário B, assinado por B.
(2) Usuário A pede (3) Chave Pública de B - ChPub-B,
a chave pública de B
assinada por EmpCert, é enviada

Computador (4) Usuário A verifica assinatura de EmpCert


na chave ChPub-B
do usuário A
(5) Usuário A usa ChPub-B para
verificar assinatura de B em DOC

15
1. Alice compra um Cert. Digital. e guarda-o em lugar
seguro. (pen-drive?)
2. Esse Certificado contém p A , s A  e outros dados da Alice
assinados pela AC (Autoridade Certificadora): s AC p A ,
dados pessoais, data de validade, etc..
3. Alice pode assinar documentos, criptografar documentos,
etc. Qual chave?
4. Qualquer pessoa pode autenticar docums., verificar
assinatura, decriptografar docums. Qual chave?
Pessoas jurídicas como bancos, lojas virtuais, órgãos do
governo (entrega de Decl. Imposto de Renda): web site “envia”
uma chave para o seu computador. Qual chave?

16
RSA (pg. 127)
1. Dados dois primos (“ultra” secretos) q, r, n  q  r
2. Função de Euler: n  q  1r  1
3. Sorteia s (chave secreta, particular): mdcs, n  1
4. Calcula chave pública p: s  p  1 mod n (Algoritmo
de Euclides estendido, pg. 244)
5. Ataque: fatora n, calcula n, e conhece p  conhece s
!!!!!!! Como calcular s?
Exemplo (didático) de RSA
 q  5, r  11, n  55, s  17,
 p  33 (check: 17  33  1 mod 40)
17
Exerc.: Para q  3, r  5, calcular n e, para s  7, calcular p.
Definição de RSA
1. Alice: x  n, x p mod n  y e envia y para Beto
2. Beto recupera x: y s mod n  x (demonstrado na pg 133)
Exemplo
Alice: x  9, 9 33 mod 55  14
Beto: 14 17 mod 55  9

18
Assinatura RSA (pg 194)
Supor: p A , s A  o par de chaves da Alice
1. Alice: x s A mod n  y e envia y para Beto  y é a
assinatura da Alice sobre x Por quê?
2. Beto recupera x: y p A mod n  x
Não é assinatura do Beto. Por quê?
Como Beto assinaria um x?
Como Alice e Beto, também, assinariam o mesmo documento
x?

19
Certificado Digital do ICP Brasil (PKI): AC - Autoridade
Certificadora com chave
p AC , s AC 
Assinat. da AC

Alice p A RSA AC p A 

Beto p B RSA AC p B 

20
Números primos (pg. 242)
 Inteiro p  1 é primo  p é divisível apenas por 1 e por
p.
 2, 3, 5, 7, 11, . . . .
 Conj. dos ints mod n que são relativam/ primos a n: Z n .
 Note 0  Z 10 , pois mdc0, 10  10.
1 3 7 9
1 1 3 7 9
 A tabela de multiplicação para Z 10 é: 3 3 9 1 7
7 7 1 9 3
9 9 7 3 1

21
Função  de Euler (pg. 251)
 n: número de elems Z n , tb chamado ordem de Z n .
 Se p for primo, p  p  1, pois
Z p  1, 2, 3,  p  1. E.g, 7  7  1  6,
Z 7  1, 2, 3, 4, 5, 6
 Se n  q  r, q e r primos (como no RSA),
q  r  qr  q  1r  1. E.g.,
10  2  5  2  15  1  4  |Z 10 |
Teorema de Euler (pg. 262)
a  Z N : a N  1 mod N
 E.g. Z 10  1, 3, 7, 9, 10  4, 3 4 mod 10  1
 Consequência: a N1 mod N é a inversa de a mod N pois

22
a N1  a  1 mod N, N  n
No RSA, o módulo é n  q  r (onde q e r são dois primos
ímpares distintos), e
 a chave particular secreta é s tal que mdcs, n  1
RSA
chave pública n, p  s n1 mod n
chave particular s
n1 N
tese: ps  s s  s  1 mod n
Problema RSA
dados n, p, y  x p mod n Computacionalmente difícil calcular x
calcular x

23
24
Demonstração da inversa do RSA (pg 134):
Tese:x  Z n : x p  s  x mod n
ps  1 mod n  x ps  x 1kn mod n mod n  x 1 mod n mod
(algum int k) pois kn  1 mod n  1
Tese: x  Z n : x kn1 mod n  x
Por construção: n  q. r, 2 primos
[Caso A] x múltiplo de q e de r  x kn1 mod n  x pois
x  0 modqr
[Caso B] x  Z n  x kn1   x n x 1  x mod n
 1(Euler)
[Caso C] x  Z n e x múltiplo de r  x  tr (p/ algum int. t)
1. Subcaso mod q:
x  Z q  x kn1 mod q  x kqr  x 1 mod q 

25
q kr
x   x  x mod q
1(Euler)

2. Subcaso mod r: x kn1 mod r  x pois


x  tr  x  0 mod r
3. Dos 2 subcasos: x kn1  x  0 mod n pois é divisível
por q e por r também
[Caso D] x  Z n e x múlt. de q é análogo ao [Caso C], sendo x
múltiplo de q , ao invés de r

26
Algoritmo de exponenciação (pg. 265)
 O algoritmo trivial de multiplicar m por m, e vezes, é
muito lento.
 A idéia deste algoritmo é utilizar recursivamente a
seguinte igualdade:
e/2 2
e
m  se 2 divide e
m mod n 
m e/2  2  m 1 se 2 não divide e
 Representação binária em t  1 bits de
e  b t b t1  b 1 b 0  2 , i.e.,
e  b t 2 t  b t1 2 t1  b 1 2 1  b 0 .
 O algoritmo inicia com uma variável temporária chamada,
digamos, temp  1,
 Examina cada um destes bits, da esquerda (bit mais
27
significativo) para a direita.
 Faz temp  temp 2 . Se b t  1 faz temp  temp  m
 Complexidade de tempo: Olog e. Por quê? Resp:
examina cada bit uma e 1 só vez.
 Exemplos:
1. e  2  10 2 , e  1. 2 1  0,
temp  1, temp  1 2 , b 1  1  temp  1  m, b 0  0, temp
2. e  3  11 2 , e  1. 2 1  1,
temp  1, temp  1 2 , b 1  1  temp  1  m, b 0  1, temp

Algoritmo de exponenciação modular


Entrada: inteiros m  0, e  0 e n  0.

28
Saída: m e mod n.
1. temp  1;
2. para j  t, t  1,  1, 0 faça {
2.1 temp  temp  temp mod n;
2.2 se b j  1 então temp  temp  m mod n;
/*tem-se aqui temp  m b t 2 tj b t1 2 tj1 b j */

2.3 }/* fim-laço j  t, . . . */


3. Resposta é temp . 

29
“Quebra do Algoritmo RSA” (pg. 129)
 Algoritmo mais rápido para fatoração de n: NFS -
Number Field Sieve
1.92ln n 1/3 ln n 2/3
 Complexidade Oe  exponencial no no. de
bits de n
 Peter Shor: comp. quântico

30
RSA
Computador quântico: quebra rápida

•quantum bit – qubit

•cada qubit pode estar simultaneamente no estado 0 ou no estado 1

•1 qubit -- representado por um átomo, estando em


um estado ou outro, com uma probabilidade numérica

•2 qubits podem estar simultaneamente em 4 estados (22)

•n qubits podem estar simultaneamente em 2n estados

•tal fenômeno é chamado superposição de estados

•permite computação paralela de milhões de alternativas simultâneas,


utilizando-se só um processador quântico

•Peter Shor publicou algoritmo em tempo polinomial para IFP e DLP


SE computador quântico existisse (1994)

31
Outras formas de quebrar RSA? (pg. 135)
 algoritmo rápido para  algoritmo rápido para

calcular  sem fatorar n fatorar n
 Conhece n e def.: n  q  1r  1  n  q  r  1
 q  r é raiz quadr. de
q  r 2  4n  q 2  r 2  2qr  4qr  q  r 2
 q é metade de q  r  q  r  2q

32
 algoritmo rápido para  algoritmo rápido para

calcular s sem fatorar n fatorar n
 ps  1é múltiplo de n; logo, T. Euler:
ps1
 ps1
a  Zn : a  1 mod n  a 2  a ps1  1 mod n
(*)
 Reescreve: ps  1  2 r t, t ímpar;
 Miller (1995): para  metade dos
2rt 2rt
a  Zn : a  1 mod n (i.e., a  a ps1 possui raiz
quadr. mod n  x  1)
2rt
 Se a é dessa metade, mdc a  1, n é uma fatoração
de n, por (*)
 Tentar vários a até achar um nessa metade: máximo de 2
33
tentativas.

34
 algoritmo rápido para  algoritmo rápido para

calcular s  equivalente s calcular s
 Note: a diferença entre DOIS desses s  é igual a
mmcq  1, r  1 pois:
1. ps 1  1  0 mod n, e
2. ps 2  1  0 mod n, pois ambos satisfazem
ps  1 mod n por hip.
3. logo ps 1  s 2   0 mod n implica
s 1  s 2   0 mod n
 Calcular esse mmc, e como ps  mmcq  1, r  1
calcular s
 Lembrar que n  q  1r  1
35
36
Ataque pelo expoente “pequeno”
 Para reduzir o tempo de ciframento e de verificação de
assinaturas é comum usar-se um expoente público
pequeno p
 O tamanho mínimo possível é 3
 Quando o expoente p é pequeno, é provável que x p  n e
então x p NÃO sofre redução pelo mod n,
 Então a estrutura de x é parcialmente revelada; basta
calcular y 1/p  x p  1/p  x para obter x.

37
Timing attack (pg 137)
 Como smartcards estão sendo mais utilizados para
armazenar a chave particular s  b t b t1  b 1 b 0  2 do
RSA, esse ataque é importante.
x e/2  2 se 2 divide e
 x e mod n  “repeated
x e/2  2  x se 2 não divide e
squaring´´
 Paul Kocher mostrou que
- calculando-se o tempo que o smartcard leva para fazer
uma decriptografia (ou uma assinatura)
- consegue-se recuperar o expoente particular s.
 Considere uma implementação de RSA usando “repeated
squaring”
38
 Supomos que o atacante consegue forçar o smartcard a
calcular x s mod n para vários x
 Observe que o tempo  t usado para calcular x e/2  2 mod n
não é gasto se b t  0 (o bit mais à esquerda)
 Kocher correlacionou os  t e os tempos gastos para
calcular x s mod n para vários x, e decidir se b t  0 ou não.
 Continuando assim ele recupera b t1 , b t2 e assim por
diante.

39
Teste de primalidade
 À medida que os números se tornam longos, os primos
ficam raros.
 Prob{inteiro n primo} 1/ ln n. Por exemplo:
n 100 1. 000
1
ln n
1/4. 6052  0. 21715 1/ ln 1000  1/6. 9078  0. 14476

n 10. 000 100. 000


1
ln n
1/ ln 10000  1/9. 2103  0. 10857 1/ ln 100000  1/11. 513  0. 08 6859

 Essa probabilidade é corolário do Teorema de Números


Primos que diz: se x denota o número de primos  x,
então
40
x
lim
x x/ ln x
1

 Algoritmo AKS (Agrawal et al.) tempo polinomial - grau


10

41
Algoritmo do tipo “Monte Carlo”

a diz “n não é primo”


n com certeza
n é primo?

testemunho a a diz “n é primo”


com prob 1

MAS o algoritmo é rápido


Análogo a tribunal

42
Conceitos preliminares (pg 254)
 Quando n é produto de 2 primos (e.g., RSA), a  Z n
possui no máximo 4 raízes quadradas mod n. Por
exemplo, se n  15 tem-se a tabela a seguir:

x a mod 15 1 2 3 4 5 6 7 8 9 10 11  4 12 13 14  1


x 2  a mod 15 1 4 9 1 10 6 4 4 6 10 1 9 4 1

 Note: 1 possui 4 raízes quadradas (i.e., 2 pares):


1 e 14  15  1 (14  1 mod 15), um par,
4 e 11  15  4 (11  4 mod 15), outro par, que é
1 mod n
 Note: 6, 9, 10 não ocorrem 4 vezes na linha x 2 mod 15 pois
 Z 15 .

43
 Se p  2 é um primo então 1 possui exatamente um par
de raízes quadradas mod p. E.g., 1 mod 11  1 e
1 mod 11  10  11  1 (10  1 mod 11)
x a mod p 1 2 3 4 5 6 7 8 9 10  1

x 2  a mod 11 1 4 9 5 3 3 5 9 4 1

 Outro exemplo: p  5 primo, 1 possui exatam/ 1 par de


raízes quadradas: 1 e 1: 1 mod 5  1 e
1  4  1 mod 5, conforme tabela abaixo:
x a mod p 1 2 3  2 4  1
x 2  a mod 5 1 2 2 mod 5  4  1 3 2 mod 5  4  1 4 2 mod 5  1

 Note: 2 e 3 não possuem mod 5 . São não-resíduos


quadráticos.
44
45
Algoritmo de Miller-Rabin (pg. 139)
 Pergunta: n é primo? Resposta: sim (talvez, com prob.
 3/4) ou não (certeza).
 Escrever
n  1  2 t  c, c ímpar
 Escolhe-se um a tal que 1  a  n  1 chamado
testemunho.
 Para calcular a n1 mod n basta calcular primeiro
a c mod n  d
e depois elevar d sucessivamente ao quadrado t vezes,
pois
2t c 2t
d  a   a n1 mod n

46
.
 Calcular
2 2c
r 1  d  a mod n , r2  r 21 a 22c
mod n , r 3  r 22 
t
... r t  r 2t1  a 2 c  a n1 mod n
 Se, para j  1, 2,  t, um destes r j  1 então r j1 é raiz
quadrada de 1 mod n.
 Se r j1  1 e  1, pode-se afirmar com certeza que n é
composto, pois possui mais de duas 1 mod n.
 Ademais, se
rt  1
então conclui-se com certeza que n NÃO é primo
pois se n fosse primo, pelo Teorema de Euler (pg 138: n
47
primo r t  1) dever-se-ia ter
r t  a n1 mod n  1
 Por outro lado, se os testes nos 2 ítens anteriores não
concluírem que n é composto, é provável que n seja
primo.
 E então a é chamado de testemunho da primalidade, com
probabilidade  3/4. I.e., prova-se que  1/4 dos
testemunhos “mentem” que n é primo. (Exemplos a
seguir.)
 Exemplo de n primo para o algoritmo:
n  2177323, n  1  2177322  2 t  c  2  1088661t 
1  d, d 2  1 2 mod 2177323  1  r t e o algoritmo
conclui corretamente que n é primo.
 Exemplo de n composto para o algoritmo:
48
n  15, n  1  2  7t  1, c  7, a  5, a c  5 7 mod 15 
5  d, d 2  5 2 mod 15  10  r t e o algoritmo conclui
corretamente que n é composto.
- Mas para a  14, d  14 7 mod 15 
14  n  1, d 2  14 2 mod 15  1  r t e algoritmo
conclui incorretamente que n é primo, i.e., a  14 é
um testemunho falso.
 Algoritmo "mente" p/ números de Carmichael
(pseudo-primos, raros): TODOS os testemunhos dizem
que são primos. E.g.: n  561  3  11  17.

49
Algoritmo de Miller-Rabin de primalidade (pg 141)

Entrada: int n  2 ímpar, w  0 é o no. de testemunhos.


Saída: resp. “n é composto” (c/ certeza) ou “n é primo” com
prob.  1   14  w
1. Seja n  1  2 t c, onde c é ímpar.
2. para teste  1, 2,  w faça {
2.1 Escolher um testemunho a tal que 1  a  n  1;
2.2 r 0  a c mod n; r 1  r 0  2 mod n;
2.3 para j  1, 2,  t faça {
(a) se r j  1 e r j1  1 e r j1  1 então responder “n
é composto” e fim;
(b) r j1  r j  2 mod n;
50
(c) } /* fim-para */
2.4 se r t  1 então responder “n é composto” e fim;
3. responder “n é primo” e fim;

Esse algoritmo “sorteia” w testemunhos a de primalidade:


a 1 , a 2 , . . . , a w , dentro de um laço.
Esse algoritmo pode parar antes de completar o laço. Por quê?

51
AES versus RSA
 AES não permite assinatura digital
 RSA é cerca de 70 vezes mais lento, mas permite
assinatura.

52
Híbrido: KEM - Key Encapsulation Mechanism
1. Alice gera uma chave K AES pseudo-aleatória - chave
volátil, ou chave de sessão.
2. Calcula K B  RSAp B , K e envia K B para Beto (chave
p B é a pública do Beto)
3. Beto recupera RSAs B , K B   K
4. Alice envia vários x j AESx j , K  y j para Beto
5. Beto recupera AES 1 y j , K  x j
 Autenticação do destinatário Beto? (só o Beto?)
 Autenticação da Alice? Não há.
 Ganha velocidade?

53
54
A seguir:
 DH, MTI, ataques
 Rabin, ElGamal, DSS
 ECC: curvas elípticas

55

Você também pode gostar