Digital Signature Standard

O Padrão de assinatura digital (DSS) é o padrão que usa o algoritmo de assinatura digital (DSA) para seu algoritmo de assinatura e SHA-1 como algoritmo de hash de mensagens. O DSA é uma codificação de chave pública usada apenas para gerar assinaturas digitais e não pode ser usada para criptografia de dados.

A assinatura DSA baseia-se na assinatura do ElGamal, mas é computacionalmente mais econômica porque trabalha com um grupo menor de potências do corpo finito.

Geração da firma

[editar | editar código-fonte]

Para gerar a firma :

  1. Escolhe um número primo de bits, onde e é divisível por .
  2. Escolhe um número primo de bits, tal que , onde é algum número natural.
  3. Escolhe , onde tal que .
  4. Escolhe de forma aleatória, onde .
  5. Calcula .

Os dados públicos são , , e . A firma, a chave privada, é .

Pra assinar à mensagem por pela firma :

  1. Escolhe um número aleatório , onde .
  2. Calcula .
  3. Calcula , onde é a função hash SHA-1 aplicada à mensagem .
  4. A assinatura é o par .

Si ou é zero, repete!

Verificação

[editar | editar código-fonte]
  1. Calcula .
  2. Calcula .
  3. Calcula .
  4. Calcula .
  5. A assinatura é válida se .

Demostração do Algoritmo

[editar | editar código-fonte]

De segue pelo Pequeno Teorema de Fermat. Já que e é primo segue que tem ordem .

O firmador computa

Então

Já que tem ordem ,

Finalmente,