Assinatura de Schnorr

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

A Assinatura de Schnorr é um protocolo de assinatura digital proposto por en:Claus P. Schnorr em 1991[1]. Trata-se de mais um protocolo baseado no problema do logaritmo discreto.

Algoritmo

O algoritmo usa uma função de resumo h e operações de grupos[2]

Geração de chaves

Escolher dois primos p e q tais que q|(p1).

Escolher um elemento α gerador do grupo Zq como subgrupo de Zp (ou seja, αq1(modp)).

Escolher uma função de resumo h cujo domínio seja {0,1}* e o contra-domínio seja Zq.

Escolher um xZq para ser a chave privada.

Calcular y=αx(modp) e usar (y,α,p,q,h) como chave pública.

Assinatura

Para assinar uma mensagem mZq:

Calcular β=αm(modp);

Concatenar com a m: m||β;

Calcular r=h(m||β);

Calcular s=k+mr(modq);

Usar (r,s) como assinatura.

Verificação

Para verificar uma assinatura (r,s) de uma mensagem mZq:

Calcular u=αs(modp);

Calcular v=uyr(modp);

Concatenar m com v e calcular a função de resumo: w=h(m||v);

Aceitar a assinatura se w é igual a r.

Predefinição:Referências