Elliptic_curve_digital_signature - Kasimashi/Systemes-embarques GitHub Wiki
Elliptic Curve Digital Signature Algorithm
L'algorithme ECDSA (Elliptic Curve Digital Signature Algorithm) permet de signer des messages ; en lui même, il n'a pas grand intérêt, donc pas la peine d'en faire des tartines.
Signature d'un message
Imaginez que vous souhaitiez signer quelque chose, n'importe quelle suite de bits (une phrase, un fichier, on s'en fout). Voici comment on signe ce bazar avec la courbe (A, B, P, G, n) :
- (m = H(message)) ou H est un algo de hash, par exemple SHA-256.
- Soit k un entier au hasard entre 1 et n - 1
- Soit r l'abscisse du point k * G (mod n)
- Soit s = k-1 (m + kr) (mod n)
La signature est donnée par le couple r, s.
Vérifier la signature
Idem, le processus de vérification de la signature est relativement simple. Soient m notre hash de message, et la signature (r, s).
- Vérifier que la clé publique Q est valide.
- Vérifier que n * Q = 0.
- Vérifier que r et s sont dans [1, n - 1]
- w = s-1 (mod n)
- (i, j) = m * w * G + r * w * Q
- Si i = r (mod n), alors la signature est valide