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,