17.03.2015 Views

Assinatura Digital - Unicamp

Assinatura Digital - Unicamp

Assinatura Digital - Unicamp

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introdução à Criptografia<br />

<strong>Assinatura</strong> <strong>Digital</strong><br />

Exemplos de algoritmos:<br />

• RSA-PSS<br />

• Schnorr<br />

• DSA (EC-DSA)<br />

• Shamir (CBI)<br />

• Signcryption<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Parâmetros<br />

p, q primos<br />

O algoritmo de assinatura RSA-PSS<br />

Probabilistic Signature Scheme<br />

Codificação Aleatória da Mensagem<br />

N = p · q, ed ≡ 1 (mod φ(N))<br />

k = |N| = k 0 + k 1<br />

G : {0, 1} k 1<br />

→ {0, 1} k−k 1−1<br />

H : {0, 1} ∗ → {0, 1} k 1<br />

G 1 (x) = os k 0 bits mais significativos de G(x)<br />

G 2 (x) = os k − k 1 − k 0 − 1 bits menos significativos de G(x)<br />

chave Privada: d<br />

chave Pública: N, e, G, H, k 0 , k 1<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura RSA-PSS<br />

Geração (M, d, N):<br />

r ←∈ U {0, 1} k 0<br />

w ← H(M||r)<br />

r ∗ ← G 1 (w) ⊕ r<br />

y ← 0||w||r ∗ ||G 2 (w)<br />

return (y d (mod N))<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Verificação (M, a, e, N):<br />

O algoritmo de assinatura RSA-PSS<br />

y ← a e (mod N)<br />

y ← b||w||r ∗ ||γ<br />

r ← G 1 (w) ⊕ r ∗ ;<br />

se (H(M||r) = w e G 2 (w) = γ e b = 0) então devolva SIM<br />

senão devolva NÃO.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura de Schnorr<br />

The Schnorr Signature Scheme, 1990<br />

Parâmetros<br />

p, q primos tais que q|p−1, |p| = 1024, |q| = 160<br />

g ∈ Z ∗ p de ordem q<br />

H : {0, 1} ∗ → Z q (H = SHA−1)<br />

x ∈ Z q<br />

y = g −x mod p<br />

chave Privada: x<br />

chave Pública: p, q, g, y, H<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura de Schnorr<br />

Geração(M, x):<br />

k ∈ U Z q<br />

r ← (g k (mod p)),<br />

e ← H(M||r)<br />

s ← (k + xe (mod q)),<br />

return (e, s)<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura de Schnorr<br />

Verificação (M, (e, s), p, q, g, y, H):<br />

r′ ← g s y e (mod p),<br />

e′ ← H(M||r′),<br />

se (e′ = e) então devolva SIM senão devolva NÃO.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura DSA<br />

The <strong>Digital</strong> Signature Standard, 1991<br />

Parâmetros<br />

p, q primos tais que q|p−1, |p| = 1024, |q| = 160<br />

g ∈ Z ∗ p de ordem q<br />

H : {0, 1} ∗ → Z q (H = SHA−1)<br />

x ∈ Z q<br />

y = g x mod p<br />

chave Privada: x<br />

chave Pública: p, q, g, y, H<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura DSA<br />

Geração(M, x):<br />

k ∈ U Z q<br />

r ← (g k (mod p))(mod q),<br />

s ← k −1 (H(M) + xr)(mod q)<br />

return (r, s)<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura DSA<br />

Verificação (M, (r, s), p, q, g, y, H):<br />

w ← s −1 (mod q),<br />

u 1 ← H(M)w (mod q),<br />

u 2 ← rw (mod q),<br />

se (r = (g u 1<br />

y u 2<br />

(mod p)) (mod q)) então devolva SIM<br />

senão devolva NÃO.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Criptografia Baseada em Identidades<br />

chave-privada = F (chave-mestre, identidade)<br />

chave-pública = alice@ic.unicamp.br (identidade)<br />

• Conceito proposto por Shamir, 1985 (assinatura digital)<br />

• Cocks, 2001, símbolo de Jacobi.<br />

• Sakai, Ohgishi e Kasahara, 2000, emparelhamentos bilineares.<br />

• D. Boneh e M. Franklin, 2001, emparelhamentos bilineares, Voltage<br />

Security.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Criptografia Baseada em Identidades (CBI)<br />

O sistema de assinatura de Shamir, baseado em identidades, utiliza os<br />

seguintes quatro algoritmos:<br />

• Configuração: algoritmo operado pela autoridade de confiança<br />

(AC) para gerar os parâmetros globais do sistema e a<br />

chave-mestre.<br />

• Gerar-chave-usuário:<br />

Entrada: a chave-mestre e uma cadeia arbitrária de bits ID.<br />

Saída: uma chave privada correspondente a ID.<br />

• <strong>Assinatura</strong>: algoritmo de assinatura digital;<br />

Entrada: uma mensagem e a chave privada do assinante<br />

Saída: a assinatura da mensagem.<br />

• Verificar: algoritmo para verificar uma assinatura<br />

Entrada: o par mensagem e assinatura<br />

Saída: Verdadeira ou Falsa<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Parâmetros<br />

Configuração:<br />

AC<br />

- p, q primos<br />

- N = p · q<br />

- e: um enteiro tal que mdc(e, φ(N)) = 1<br />

- d: um inteiro tal que ed ≡ 1 (mod φ(N))<br />

- h : {0, 1} ∗ → Z φ(N)<br />

- chave privada de AC: ⁀chave-mestre = d<br />

- Parâmetros públicos: N, e, h<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Gerar-chave-usuário:<br />

Alice (ID):<br />

Parâmetros<br />

ID →→→→ AC<br />

AC :<br />

g ←ID d (mod N) →→→→ Alice<br />

g: chave privada de Alice<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Geração da <strong>Assinatura</strong><br />

<strong>Assinatura</strong>:<br />

<strong>Assinatura</strong>(M, g):<br />

r ∈ U Z ∗ N<br />

t ← r e (mod N),<br />

s ← g · r h(t||M) (mod N).<br />

A assinatura é o par (s, t)<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Verificação da assinatura<br />

Verificar:<br />

Verificar((ID, M, (s, t), N, e, h)):<br />

se (s e ≡ ID · t h(t||M) (mod N))<br />

então devolva Verdadeiro senão devolva Falsa.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Signcryption: assinatura + cifra<br />

• Criptossistema que combina as operações de assinatura e cifragem<br />

em uma única operação criptográfica.<br />

• Proposto por Yuliang Zheng, 1997.<br />

(Baseado na assinatura SDSS1).<br />

• O esquema de signcryption TBOS (Two Birds One Stone), proposto<br />

por Malone-Lee and Wembo Mao, em 2003, é baseado no sistema<br />

RSA.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de assinatura SDSS1<br />

Parâmetros<br />

- p, q primos tais que q|p−1, |p| = 1024, |q| = 160<br />

- g ∈ Z ∗ p de ordem q<br />

- H : {0, 1} ∗ → Z q (H = SHA−1)<br />

- x A ∈ Z q<br />

- y A = g x A<br />

mod p<br />

- chave Privada: x A<br />

- chave Pública: p, q, g, y A , H<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Gerar assinatura<br />

Para assinar um documento M, Alice faz o seguinte:<br />

1. u ∈ U Z q<br />

2. Calcula k ← g u mod p<br />

3. e ← H(k||M)<br />

4. s ← u · (e + x A ) −1 (mod q)<br />

Alice envia (M, e, s)<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Bob recebe de Alice (M, e, s):<br />

Verificação<br />

1. Bob recupera k de (e, s, g, p, y A ):<br />

k ← (g e y A ) s (mod p)<br />

2. Se e = H(k||M) então Bob aceita M como uma<br />

mensagem válida de Alice.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

O algoritmo de signcryption de Zheng<br />

Parâmetros<br />

- p, q primos tais que q|p−1, |p| = 1024, |q| = 160<br />

- g ∈ Z ∗ p de ordem q<br />

- H : {0, 1} ∗ → Z q (H = SHA−1)<br />

- E um cifrador de blocos (E = AES)<br />

- x A ∈ Z q<br />

- y A = g x A<br />

mod p<br />

- chave Privada: x A<br />

- chave Pública: p, q, g, y A , H, E<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

A operação de signcryption<br />

Alice faz o seguinte:<br />

Objetivo: enviar uma mensagem assinada e cifrada a Bob<br />

1. u ∈ U Z q<br />

2. Calcula K ← yB u mod p e divide K em K = K 1||K 2<br />

3. e ← H(K 2 , M)<br />

4. s ← u · (e + x A ) −1 (mod q)<br />

5. c ← E K1 (M)<br />

Alice envia (c, e, s)<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Bob recebe de Alice (c, e, s):<br />

A operação de unsigncryption<br />

1. Bob recupera K de (e, s, g, p, y A , x B ):<br />

K ← (g e y A ) sx B<br />

(mod p)<br />

2. Divide K em K 1 e K 2<br />

3. M ← D K1 (c)<br />

4. Se e = H(K 2 , M) então Bob aceita M como uma<br />

mensagem válida de Alice.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

A operação de signcryption + não-repudio<br />

Alice faz o seguinte:<br />

Objetivo: enviar uma mensagem assinada e cifrada a Bob<br />

1. u ∈ U Z q<br />

2. Calcula k ← g u mod p<br />

3. Calcula K ← yB u mod p e divide K em K = K 1||K 2<br />

4. c ← E K1 (M)<br />

5. e ← H(k||M||y A ||y B )<br />

6. s ← u · (e + x A ) −1 (mod q)<br />

Alice envia (c, e, s)<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Verificação<br />

Bob recebe de Alice (c, e, s):<br />

1. Bob recupera k e K de (e, s, g, p, y A , x B ):<br />

k ← (g e y A ) s (mod p)<br />

K ← (k) x B<br />

(mod p)<br />

2. Divide K em K 1 e K 2<br />

3. M ← D K1 (c)<br />

4. Se e = H(k||M||y A ||y B ) então Bob aceita M como uma<br />

mensagem válida de Alice.<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

Signcryption + não-repudio<br />

Uma terceira entidade pode verificar que (m||y A ||y B , e, s) é uma<br />

assinatura (SDSS1) válida utilizando a chave pública de A:<br />

1. k ← (g e y A ) s (mod p)<br />

2. Se e = H(k||M||y A ||y B ) ??<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

A operação de signcryption<br />

utilizando RSA<br />

Two Birds one Stone: Malone-Lee, Mao, 2003<br />

[Padding(M, r) d A<br />

(mod N A )] e B<br />

(mod N B )<br />

|N A | = |N B | = k<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

A operação de signcryption<br />

utilizando RSA<br />

|N A | = |N B | = k<br />

σ := Padding(M, r) d A<br />

(mod N A )<br />

σ < N A < 2 k<br />

σ ′ := σ − 2 k−1<br />

σ ′ < 2 k−1 < N B<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

A operação de signcryption<br />

utilizando RSA<br />

Chaves públicas: (N A , e A ), (N B , e B )<br />

chaves privadas: (NA, d A ), (N B , d B )<br />

k = |N A | = |N B | = n + k 0 + k 1<br />

Funções hash:<br />

H : {0, 1} n+k 0<br />

→ {0, 1} k 1<br />

G : {0, 1} k 1<br />

→ {0, 1} n+k 0<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

1. r ←∈ U {0, 1} k 0<br />

2. w ← H(M||r)<br />

3. s ← G(w) ⊕ (M||r)<br />

A operação de signcryption<br />

utilizando RSA<br />

4. Se s||w > N A volte ao passo 1<br />

5. c ′ ← (s||w) d A<br />

(mod N A )<br />

6. Se c ′ > N B , c ′ ← c ′ − 2 k−1<br />

7. c ← c ′e B<br />

(mod N B )<br />

8. Enviar c a Bob<br />

IC-UNICAMP 2008


Introdução à Criptografia<br />

A operação de unsigncryption<br />

1. c ′ ← c d B<br />

(mod N B )<br />

2. Se c ′ > N A , rejeite<br />

3. µ ← c e A<br />

(mod N A )<br />

4. Escreva µ como s||w<br />

5. M||r ← G(w) ⊕ s<br />

6. Se H(M||r) = w devolva M<br />

7. c ′ ← c ′ + 2 k−1<br />

8. Se c ′ > N A , rejeite<br />

9. µ ← c e A<br />

(mod N A )<br />

10. Escreva µ como s||w<br />

11. M||r ← G(w) ⊕ s<br />

12. Se w ≠ H(M||r), rejeite<br />

13. Devolva M<br />

IC-UNICAMP 2008

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

Saved successfully!

Ooh no, something went wrong!