この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 12821|答える: 0

[C] SM2デジタル署名検証の原理

[リンクをコピー]
掲載地 2019/06/26 10:09:45 | | |
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
著作権注意:この記事はブロガーによるオリジナル記事です。転載のためにブログ投稿のリンクを添付してください!





先の:【オリジナル】Google AdSense送金回収チュートリアル
次に:Angular Event binding/attribute bindings @HostListener、@HostBinding
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com