4 votos

¿Cómo es de insegura la Firma Schnorr en los 2 escenarios siguientes?

  1. Cuando no se utiliza una función hash, $s = k-x \cdot m \mod {q}$ en lugar de $s = k-x \cdot H(m||r) \mod{q}$ ?
  2. Cuando una función hash se define como $H(m)$ en lugar de $H(m||r)$ ?

Ref: Firma Schnorr

4voto

Dick Kusleika Puntos 15230

En cuanto a 2: si $e= H(m)$ et $s = k - x \cdot H(m)$ El $k$ ya no sirve para nada. Cualquiera puede crear $H(m)$ y no hay manera de verificar que $s$ ha sido creada por el poseedor de la clave privada $x$ . En el esquema original, $g^s \cdot y^e$ produce $g^k = r$ para que podamos verificar que $e = H(m \| r)$ es correcto. En la variación 2, el $r$ ha sido eliminado y no puede ser calculado por un verificador. En realidad, esto ni siquiera es un esquema de firma, ya que no hay verificación más allá de comprobar $e = H(m)$ .

Para abordar la variación 1, como en el comentario: si utilizamos $(r,s)$ donde $s = k - x \cdot m$ la ecuación de verificación es $g^s \cdot y^m = r$ dado $(r,s)$ y el mensaje $m$ y clave pública $y$ si se mantiene, es una firma válida (sin necesidad de hashing). Pero entonces a partir de una firma válida $(r,s)$ para el mensaje $m$ generamos uno para $m+1$ multiplicando $r$ por $y$ y manteniendo $s$ . La comprobación se convierte entonces en $$g^s \cdot y^{m+1} = g^s \cdot y^m \cdot y = r \cdot y$$ que también es válido. Entonces también el hashing sigue siendo necesario.

Y si utilizamos $e = H(m)$ y así $(r,s) = (g^k, k - x \cdot H(m))$ como la firma, podemos hacer algo similar: la ecuación verificadora se convierte en $g^s \cdot y^{H(m)} = r$ (válido si es verdadero) y entonces $(g \cdot r, s+1)$ también es una firma válida para $m$ verificando da $$g^{s+1} \cdot y^{H(m)} = g \cdot (g^s \cdot y^{H(m)}) = g \cdot r$$ como $(r,s)$ era válida, por lo que la nueva también lo es.

Obsérvese también que si reutilizamos el mismo $k$ (y por tanto $r = g^k$ ) para 2 firmas de mensajes diferentes (en el esquema seguro, normal), y el oponente lo sabe o lo adivina, entonces podemos calcular $x$ la clave secreta: entonces tenemos $(e_1, s_1)$ et $(e_2, s_2)$ donde $e_1 = H(m_1 \| r)$ , $e_2 = H(m_2 \| r)$ , $s_1 = k - x \cdot e_1$ , $s_2 = k - x \cdot e_2$ el adversario calcula $$s_1 - s_2 = x \cdot (e_2 - e_1)$$ et $s_1, s_2, e_1, e_2$ son conocidos, lo que nos permite resolver para $x$ en la mayoría de los casos. Por supuesto, para un grupo lo suficientemente grande, y buenas elecciones aleatorias, es muy poco probable que esto suceda.

Como ves, es bastante intrincado ver por qué necesitamos ciertas cosas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X