SM2は楕円曲線に基づくデジタル署名アルゴリズムであり、楕円曲線の説明は前回の微博で見ることができ、以下はSM2署名のプロセスの簡単な紹介です。 署名される情報eeは、特定の処理後にハッシュ関数を通じて得られた元の情報であり、ハッシュアルゴリズムは国家秘密のSM3アルゴリズムを使用します。このプロセスも省略され、鍵署名と検証のプロセスのみが導入されます。
1. 署名のプロセス GGを楕円曲線上の基準点とし、dAdAを秘密鍵、PAPAを公開鍵、PA=dA∗GPA=dA∗Gとします。 署名結果(r,s)(r,s)はEEにデジタル署名することで得られ、計算過程は次の通りです。 まずランダムな数kkを選びます。もちろんこの数の選択は制約があり、今はそのままにしておく r=e+x1r=e+x1、ここで(x1,y1)=k∗G(x1,y1)=k∗G s=(1+dA)−1∗(k−r∗dA)s=(1+dA)−1∗(k−r∗dA)を計算します。 フロントは秘密鍵で実行されていることがわかります。
2. 署名検証のプロセス 署名の検証は、取得した署名、公開鍵、楕円曲線パラメータなどを使って署名を検証することであり、主な検証手順は以下の通りです。 まず、t=r+st=r+sを計算します。t=0t=0なら、それは通過しなかったことを意味します。 このとき、曲線上の点 (x1,y1) = s∗G+t∗ PA (x1,y1) = s∗G+t∗ PA は tt と ss によって計算されます 次にR=x1+eR=x1+eを計算し、RRとrrが等しいかどうかを検証します。等しい場合は検証が合格したことを意味します。
3. 検証の原則 これが検証可能な理由は、導き出してみよう。 (x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G(x1,y1)=s∗G+t∗PA =s∗G+(r+s)∗PA =s∗G+(r+s)∗dA∗G=(1+dA)∗s∗G+r∗dA∗G=(1+dA)∗(1+dA)−1∗(k−r∗dA)∗G+r∗dA∗G=(k−r∗dA)∗G+r∗dA∗G=k∗G 公開鍵に従って得られた楕円曲線上のこの点は、署名時点と整合していることがわかります。 次に、このx1x1と受信情報を加えて、送信された署名rrと一致するか確認すると合格します。 --------------------- 著者:leowang666 出典:CSDN オリジナル:https://blog.csdn.net/hugewaves/article/details/59205914 著作権注意:この記事はブロガーによるオリジナル記事です。転載のためにブログ投稿のリンクを添付してください!
|