En un protocolo de autenticación , S tiene un par de claves públicas / privadas conocidas por C, y S y C han establecido un canal seguro (por ejemplo, utilizando DH o ECDH, o cualquier otro intercambio de claves). protocolo). C desea determinar si el interlocutor de este canal seguro posee la clave privada.
En ECDSA, el par de claves es un par de claves de curva elíptica, y el algoritmo de firma utiliza el esquema DSA (DSA) con la curva elíptica. Se sabe que el esquema DSA tiene algunas propiedades indeseables: las debilidades en el RNG son una preocupación real, considerando que un atacante puede obtener un millón de firmas.
Si solo se requiere autenticación, no necesitamos un esquema de firmas completo (es decir, no se requiere la capacidad de firmar mensajes arbitrarios). ¿Qué esquemas alternativos podrían usarse que eviten la propiedad aterradora que reutiliza la reutilización de la clave de identificación en varias firmas?
Sigue un esquema simple:
- C usa IES para cifrar un nonce
N1
y lo envía a S (este es el esquema de cifrado integrado de curva elíptica). - S luego envía
HMAC(key=Z, N1)
a la C, dondeZ
es un secreto compartido obtenido a través de la fase de intercambio de claves (recuerde, ya hemos establecido un canal compartido utilizando DH o algún otro método).
Esto demuestra la posesión de la clave privada: la clave privada es necesaria para que S obtenga N1
de EIS(N1)
. El servidor no es un oráculo de descifrado, no descifra mensajes arbitrarios en nombre de C, sino que responde al HMAC del valor descifrado. Finalmente, debido a que el secreto compartido Z se mezcló, lo que fue determinado conjuntamente por C y S, la firma no se puede usar para realizar un ataque de hombre en el centro: alguien que desea hacerse pasar por S to C es enviado por C, el% cifrado N1
, pero no puede reenviarlo a S para firmar, porque la firma está vinculada al Z
del canal.
Pregunta
- ¿Mi esquema de muerto simple tiene un nombre? ¿Es débil? Parece evitar el problema de la DSA donde varias firmas pueden revelar la clave, ¡pero no he hecho todo el álgebra para estar seguro!
- ¿Cuáles son las soluciones estándar populares para el problema? FHMQV está patentado, lamentablemente, pero está diseñado exactamente para esta situación, ¿no es así? Supongo que la solución popular parece ser ECDSA (utilizada en TLS, SSH), que espero evitar.
Observaciones
- El artículo de Menezes "esquemas de firma de curva elíptica" en la "Enciclopedia de criptografía y seguridad" enumera DSA, Schnorr, Nyberg-Rueppel como los diversos esquemas de firma de curva elíptica conocidos. DSA es el que no me gusta, y Nyberg-Rueppel aparentemente tiene exactamente la misma debilidad que DSA (dos firmas que usan nonces con cualquier bit conocido en la información de clave privada de fuga común). Las firmas Schnorr se ven bien, pero no parecen ser ampliamente utilizadas.
- El HCR de Hugo Krawczyk (Hashed Challenge-Response, basado en XCR, Exponential Challenge-Response) también se ve muy prometedor, es una versión reforzada de Schnorr que se supone que es más robusta. Sin embargo, creo que está cubierto por la Patente EP1847062B1 , que expira alrededor de 2025 aparentemente.