发布于 2019-03-29 17:52:24
选择一个坐标字段\mathbb F_p,例如p = 2^{256} - 2^{32} - 977。在\mathbb F_p上选择y^2 = x^3 + a x + b形式的椭圆曲线,如a = 0和b = 7。(这是比特币中使用的曲线secp256k1。)选择质数阶G的标准基点\ell,这样\ell是最小的正整数,使得[\ell]G = \underbrace{G + \cdots + G}_{\text{$\ell$ times}} = \mathcal O. \mathcal O是‘无穷大的点’,或者是群的恒等式。
ECDSA public键是曲线上具有坐标(x(P), y(P))的点P。消息m上的ECDSA 签名是带有1 < r, s < \ell的一对整数,使得verification方程 r \equiv f\bigr([H(m) \, s^{-1}]G + [r s^{-1}]A\bigr) \pmod \ell成立,其中f(A) = x(A) \bmod \ell是一种任意函数,将x坐标字段\mathbb F_p映射到标量环\mathbb Z/\ell\mathbb Z (这是一件相当奇怪的事情,但这就是生活)。
签名者知道secret标量 e,使得P = [e]G,其方程是r = f\bigl([H(m)\,s^{-1}]G + [r s^{-1} e]G\bigr) = f\bigl([H(m) \, s^{-1} + r s^{-1} e]G\bigr),,这意味着签名者可以随机一致地选择一个每个签名的秘密k,导出r = f([k]G),然后通过计算s := [H(m) \, k^{-1} + r k^{-1} e] \bmod \ell.求解s的标量方程k \equiv H(m)\,s^{-1} + r s^{-1} e \pmod \ell。
https://crypto.stackexchange.com/questions/68189
复制相似问题