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.
Para gerar a firma :
- Escolhe um número primo de bits, onde e é divisível por .
- Escolhe um número primo de bits, tal que , onde é algum número natural.
- Escolhe , onde tal que .
- Escolhe de forma aleatória, onde .
- Calcula .
Os dados públicos são , , e . A firma, a chave privada, é .
Pra assinar à mensagem por pela firma :
- Escolhe um número aleatório , onde .
- Calcula .
- Calcula , onde é a função hash
SHA-1
aplicada à mensagem .
- A assinatura é o par .
Si ou é zero, repete!
- Calcula .
- Calcula .
- Calcula .
- Calcula .
- A assinatura é válida se .
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,