Assinatura de Schnorr

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 {\displaystyle h} e operações de grupos[2]

Geração de chaves

Escolher dois primos p {\displaystyle p} e q {\displaystyle q} tais que q | ( p 1 ) {\displaystyle q|(p-1)} .

Escolher um elemento α {\displaystyle \alpha } gerador do grupo Z q {\displaystyle Z_{q}} como subgrupo de Z p {\displaystyle Z_{p}} (ou seja, α q 1 ( mod p ) {\displaystyle \alpha ^{q}\equiv 1(\mod p)} ).

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

Escolher um x Z q {\displaystyle x\in Z_{q}} para ser a chave privada.

Calcular y = α x ( mod p ) {\displaystyle y=\alpha ^{-x}(\mod p)} e usar ( y , α , p , q , h ) {\displaystyle (y,\alpha ,p,q,h)} como chave pública.

Assinatura

Para assinar uma mensagem m Z q {\displaystyle m\in Z_{q}} :

Calcular β = α m ( mod p ) {\displaystyle \beta =\alpha ^{m}(\mod p)} ;

Concatenar com a m {\displaystyle m} : m | | β {\displaystyle m||\beta } ;

Calcular r = h ( m | | β ) {\displaystyle r=h(m||\beta )} ;

Calcular s = k + m r ( m o d q ) {\displaystyle s=k+mr(modq)} ;

Usar ( r , s ) {\displaystyle (r,s)} como assinatura.

Verificação

Para verificar uma assinatura ( r , s ) {\displaystyle (r,s)} de uma mensagem m Z q {\displaystyle m\in Z_{q}} :

Calcular u = α s ( mod p ) {\displaystyle u=\alpha ^{s}(\mod p)} ;

Calcular v = u y r ( mod p ) {\displaystyle v=uy^{-r}(\mod p)} ;

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

Aceitar a assinatura se w {\displaystyle w} é igual a r {\displaystyle r} .

Referências

  1. Schnorr, Claus-Peter (1991). Efficient Signature Generation for Smart Cards. [S.l.]: Jornal of Cryptology. pp. 1 – 16 
  2. Barreto, Paulo. «Sobre a segurança de assinaturas digitais baseadas no logaritmo discreto em subgrupos de tamanho reduzido» (PDF). Consultado em 10 de dezembro de 2014