ECC椭圆曲线算法(4)签名验证过程
生活随笔
收集整理的這篇文章主要介紹了
ECC椭圆曲线算法(4)签名验证过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 說明
Alice和Bob在通信的過程中,為了驗證消息的來源,既消息確實是Alice發出來的。需要由Alice對消息使用自己的私鑰生成一個簽名hash,然后Bob用Alice的公鑰進行驗證,判斷hash是否一樣,從而知道簽名是否正確。
2. 步驟
假設:
- 基點:G
- 私鑰:k
- 公鑰:K =k *G
- Message:M
step1. Alice 數據傳送前的操作:生成公私鑰對
step2. Alice
- 選擇隨機數r
- 計算點r*G,得到(x, y)
- 根據消息求哈希h
- 根據隨機數r、消息M的哈希h、私鑰k,計算s = (h + kx)/r.
- 將消息M、簽名{rG, s}、公鑰K發給Bob
step3. Bob:收到消息M、以及簽名{rG=(x,y), s}
- 根據消息求哈希h
- 使用發送方公鑰K計算:hG/s + xK/s,并與rG比較,如相等即驗簽成功
hG/s + xK/s = hG/s + x(kG)/s = (h+xk)G/s = r(h+xk)G / (h+kx) = rG
注:
- r值
在選擇隨機數r的時候,真正的算法需要做一個判斷,計算 r 值是否為0, 如果r == 0, 需要重新隨機:r = x ? mod? n - n值
如果說橢圓曲線方程可用(CURVE, G, n)表示,其中CURVE表示橢圓曲線點域和幾何方程;G是所有點倍積運算的基點;n是該橢圓曲線的可倍積階數(multiplicative order),作為一個很大的質數,n的幾何意義在于,nG 是阿貝爾群的單位元。 - h值
實際上需要對h值作一個轉換,既是對h的二進制形式下最左邊(即最高位)L_n個bits,而L_n是上述橢圓曲線參數中的可倍積階數n的二進制長度。注意z 可能大于n,但長度絕對不會比 n 更長
【參考】
總結
以上是生活随笔為你收集整理的ECC椭圆曲线算法(4)签名验证过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (chap1 web网络基础) UR
- 下一篇: 深度学习的数学(2)恶魔神经