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
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, é
.
Assinatura
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!
Verificação
- Calcula
. - Calcula
. - Calcula
. - Calcula
. - A assinatura é válida se
.
Demostração do Algoritmo
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,