中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專欄

        EEPW首頁(yè) > 博客 > SM2算法第三篇:實(shí)現(xiàn)SM2秘鑰交換協(xié)議的算法流程

        SM2算法第三篇:實(shí)現(xiàn)SM2秘鑰交換協(xié)議的算法流程

        發(fā)布人:電子禪石 時(shí)間:2023-02-10 來源:工程師 發(fā)布文章

        參考文獻(xiàn):SM2橢圓曲線公鑰密碼算法-第三部分(秘鑰協(xié)商協(xié)議)


        一、概述

        本部分規(guī)定了SM2橢圓曲線公鑰密碼算法的密鑰交換協(xié)議,并給出了密鑰交換與驗(yàn)證示例及相應(yīng)的流程。本部分適用于商用密碼 應(yīng)用中的密鑰交換,可滿足通信雙方經(jīng)過兩次或可選三次信息傳遞過程,計(jì)算獲取一個(gè)由雙方共同決定的共享秘密密鑰(會(huì)話密鑰)。同時(shí),本部分還可為安全產(chǎn)品生產(chǎn)商提供產(chǎn)品和技術(shù)的標(biāo)準(zhǔn)定位以及標(biāo)準(zhǔn)化的參考,提高安全產(chǎn)品的可信性和互操作性。

        二、術(shù)語(yǔ)和定義


        1、密鑰  key

        確定密碼參數(shù)運(yùn)算的一個(gè)參數(shù),它用于:


        (a)加密和解密變換;


        (b)同步產(chǎn)生共享秘鑰;


        (c)數(shù)字簽名的生成和驗(yàn)證。


        2、密鑰交換  key exchange

        在通信實(shí)體之間安全地建立一個(gè)共享秘鑰的協(xié)商過程。


        3、密鑰協(xié)商:key agreement

        多個(gè)用戶之間建立一個(gè)共享秘密秘鑰的過程,并且其中任何一個(gè)用戶都不能預(yù)先確定該秘鑰的值。


        4、從A到B的密鑰確認(rèn) key comfirmation from A to B

        使用戶B確信用戶A擁有特定秘密秘鑰的保證。


        5、密鑰派生函數(shù)  key derivation function

        通過作用于共享秘密和雙方都知道的其他參數(shù),產(chǎn)生一個(gè)或多個(gè)共享秘密秘鑰的函數(shù)。


        6、雜湊函數(shù)  hash function

        將一個(gè)比特串映射為一個(gè)固定長(zhǎng)度比特串的函數(shù),該函數(shù)滿足如下性質(zhì):


        (a)對(duì)于任意給定的輸出,要找其對(duì)應(yīng)的輸入,在計(jì)算上是不可行的;


        (b)對(duì)于任意給定的輸入,要找到輸出相同的另一個(gè)輸入,在計(jì)算上是不可行的。


        7、雜湊值  hash value

        雜湊函數(shù)作用于一條消息時(shí)輸出的比特串。


        8、對(duì)稱密碼算法  symmetric cryptographic algrorithm

        一種執(zhí)行加密/解密的算法,其中加密/解密使用的秘鑰容易從計(jì)算上相互求得。


        9、發(fā)起方  initiator

        在一個(gè)協(xié)議的操作過程中發(fā)送首輪交換信息的用戶。


        10、響應(yīng)方  responder

        在一個(gè)協(xié)議的操作過程中不是發(fā)送首輪交換信息的用戶。

        11、可辨別標(biāo)識(shí)  disdinguishing identifier

        可以無(wú)歧義辨別某一實(shí)體身份的信息。


        三、符號(hào)

        A,B:使用公鑰密碼系統(tǒng)的兩個(gè)用戶。

        a,b:Fq中的元素,它們定義Fq上的一條橢圓曲線E。

        dA:用戶A的私鑰。

        dB:用戶B的私鑰。

        E(Fq):Fq上橢圓曲線E的所有有理點(diǎn)(包括無(wú)窮遠(yuǎn)點(diǎn)O)組成的集合。

        Fq:包含q個(gè)元素的有限域。

        G:橢圓曲線的上一個(gè)基點(diǎn),其階為素?cái)?shù)。

        Hash():密碼雜湊函數(shù)。

        Hv():消息摘要長(zhǎng)度為v比特的密碼雜湊函數(shù)。

        消息摘要百度百科:


        HASH函數(shù)的抗沖突性使得如果一段明文稍有變化,哪怕只更改該段落的一個(gè)字母,通過哈希算法作用后都將產(chǎn)生不同的值。而HASH算法的單向性使得要找到哈希值相同的兩個(gè)不同的輸入消息,在計(jì)算上是不可能的。所以數(shù)據(jù)的哈希值,即消息摘要,可以檢驗(yàn)數(shù)據(jù)的完整性。

        哈希函數(shù)的這種對(duì)不同的輸入能夠生成不同的值的特性使得無(wú)法找到兩個(gè)具有相同哈希值的輸入。因此,如果兩個(gè)文檔經(jīng)哈希轉(zhuǎn)換后成為相同的值,就可以肯定它們是同一文檔。所以,當(dāng)希望有效地比較兩個(gè)數(shù)據(jù)塊時(shí),就可以比較它們的哈希值。例如,可以通過比較郵件發(fā)送前和發(fā)送后的哈希值來驗(yàn)證該郵件在傳遞時(shí)是否修改。

        h:余因子,h=#E(Fq)/n,其中n是Fq的階。

        IDA,IDB:用戶A和用戶B的可辨別標(biāo)識(shí)。

        K,KA,KB:秘鑰交換協(xié)議商定的共享秘密秘鑰。

        KDF():秘鑰派生函數(shù)。

        modn:模n運(yùn)算。

        n:基點(diǎn)G的階(n是#E(Fq)的素因子)。

        O:橢圓曲線上的一個(gè)特殊點(diǎn),稱為無(wú)窮遠(yuǎn)點(diǎn)或零點(diǎn),是橢圓曲線加法群的單位元。

        ------------------------------------------分割線在此,不要看我(2016.04.20更新)---------------------------------------------------


        PA:用戶A的公鑰。

        PB:用戶B的公鑰。

        q:有限域Fq中元素的數(shù)目。

        rA:秘鑰交換中用戶A產(chǎn)生的臨時(shí)秘鑰值。

        rB:秘鑰交換中用戶B產(chǎn)生的臨時(shí)秘鑰值。

        x||y:x與y的拼接,其中x與y可以是比特串或字符串。

        ZA:關(guān)于用戶A的可辨別標(biāo)識(shí)、部分橢圓曲線系統(tǒng)參數(shù)和用戶A公鑰的雜湊值。

        ZB:關(guān)于用戶B的可辨別標(biāo)識(shí)、部分橢圓曲線系統(tǒng)參數(shù)和用戶B公鑰的雜湊值。

        #E(Fq):E(Fq)上點(diǎn)的數(shù)目,稱為橢圓曲線E(Fq)的階。

        |k|P:橢圓曲線上點(diǎn)P的k倍點(diǎn),k是正整數(shù)。

        x.y]:大于或等于x且小于或等于y的整數(shù)的集合。

        頂函數(shù):大于或等于x的最小整數(shù)。

        底函數(shù):小于或等于x的最小整數(shù)。

        &:兩個(gè)整數(shù)按比特與運(yùn)算。

        四、算法參數(shù)與輔助函數(shù)


        1、總則:

        密鑰交換協(xié)議是兩個(gè)用戶A和B通過交互的信息傳遞,用各自的私鑰和對(duì)方的公鑰來商定一個(gè)只有他們自己知道的秘密密鑰。這個(gè)共享的秘密密鑰通常用在某個(gè)對(duì)稱密碼算法中。該密鑰交換協(xié)議能夠用于密鑰管理和協(xié)商。


        2、橢圓曲線系統(tǒng)參數(shù):

        (1)有限域Fq的規(guī)模q;


        (2)定義橢圓曲線E(Fq)的兩個(gè)參數(shù)啊,a、b∈Fq;


        (3)E(Fq)上的基點(diǎn)G=(xG,yG)(G≠O),其中xG、yG是Fq中的兩個(gè)元素;


        (4)G的階n及其可選項(xiàng)(如n的余因子h等)。


        3、用戶密鑰對(duì)

        用戶A的密鑰對(duì)應(yīng)包括其私鑰dA和公鑰PA=[dA]G=(xA,yA),用戶B的密鑰對(duì)應(yīng)包括其私鑰dB和公鑰PB=[dB]G=(xB,yB)。


        用戶密鑰對(duì)的生成算法與公鑰驗(yàn)證算法應(yīng)符合第一部分第六章的規(guī)定。


        4、輔助函數(shù)

        (1)密碼雜湊函數(shù):如SM3;


        (2)密鑰派生函數(shù):從一個(gè)共享的秘密比特串中派生出密鑰數(shù)據(jù)。在密鑰協(xié)商過程中,密鑰派生函數(shù)作用在密鑰交換所獲共享的秘密比特串上,從中產(chǎn)生所需要的會(huì)話密鑰或進(jìn)一步加密所需要的秘鑰數(shù)據(jù)。


        密鑰派生函數(shù)需要調(diào)用秘鑰雜湊函數(shù)。

        (3)隨機(jī)數(shù)發(fā)生器:使用國(guó)密局規(guī)定的隨機(jī)數(shù)發(fā)生器。


        5、用戶其他信息


        五、密鑰交換協(xié)議及流程


        1、密鑰交換協(xié)議

        設(shè)用戶A和B協(xié)商獲取密鑰數(shù)據(jù)的長(zhǎng)度為klen比特,用戶A是發(fā)起方,用戶B是響應(yīng)方。用戶A和B雙方為了獲取相同的密鑰,應(yīng)實(shí)現(xiàn)如下運(yùn)算步驟:


        w=[[log2(n)]/2]-1。(注:此處的[]指的是頂函數(shù))


        用戶A:

        A1:用隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)rA∈[1,n-1];


        A2:計(jì)算橢圓曲線點(diǎn)RA=[rA]G=(x1,y1);


        A3:將RA發(fā)送給用戶B。


        用戶B:

        B1:用隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)rB∈[1,n-1];


        B2:計(jì)算橢圓曲線點(diǎn)RB=[rB]G=(x2,y2);


        B3:從RB中取出域元素x2,按本文第一部分的4.2.7給出的方法將x2的數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),計(jì)算x2`=2^w+(x2&(2^w-1));


        B4:計(jì)算tB=(dB+x2`*rB)mod n;


        B5:驗(yàn)證RA是否滿足橢圓曲線的方程,若不滿足則協(xié)商失敗;否則從從RB中取出域元素x1,按本文第一部分的4.2.7給出的方法將x2的數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),


        計(jì)算x1`=2^w+(x1&(2^w-1));


        B6:計(jì)算橢圓曲線點(diǎn)V=[h*tB](PA+[x1`]RA)=(xv,yv),若V是無(wú)窮遠(yuǎn)點(diǎn),則B協(xié)商失??;否則按本文第一部分4.2.5和4.2.4給出的方法將xv,yv的數(shù)據(jù)類型轉(zhuǎn)換為比特串;


        B7:計(jì)算KB=KDF(xv||yv||ZA||ZB,klen);


        B8:(選項(xiàng))按本文第一部分4.2.5和4.2.4給出的方法將RA的坐標(biāo)x1、y1和RB的坐標(biāo)x2、y2的數(shù)據(jù)類型轉(zhuǎn)換為比特串,計(jì)算SB==Hash.......;


        B9:將RB、(選項(xiàng)SB)發(fā)送給用戶A;


        用戶A:

        A4:從RA中提取出域元素x1,按本文第一本分4.2.7給出的方法將x1的數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),計(jì)算x1`=2^w+(x1&(2^w-1));


        A5:tA=(dA+x2`*rA)mod n;


        A6:驗(yàn)證RB是否滿足橢圓曲線的方程,若不滿足則協(xié)商失?。环駝t從從RB中取出域元素x2,按本文第一部分的4.2.7給出的方法將x2的數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),


        計(jì)算x2`=2^w+(x2&(2^w-1));


        A7:計(jì)算橢圓曲線點(diǎn)U=[h*tA](PB+[x2`]RB)=(xu,yu),若U是無(wú)窮遠(yuǎn)點(diǎn),則A協(xié)商失??;否則按本文第一部分4.2.5和4.2.4給出的方法將xu,yu的數(shù)據(jù)類型轉(zhuǎn)換為比特串;


        A8:計(jì)算KA=KDF(xu||yu||ZA||ZB,klen);


        A9:(選項(xiàng))計(jì)算S1,并檢驗(yàn)S1=SB是否成立,若不成立則從B到A的秘鑰確認(rèn)失??;


        A10:(選項(xiàng))計(jì)算SA,并將SA發(fā)送給用戶B。


        用戶B;

        B10:計(jì)算S2,并檢驗(yàn)S2=SA是否成立,若不成立則從A到B的秘鑰確認(rèn)失敗。



        (二)秘鑰交換協(xié)議流程



        、



        ————————————————

        版權(quán)聲明:本文為CSDN博主「qq_30866297」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

        原文鏈接:https://blog.csdn.net/qq_30866297/article/details/51194236


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: sm2

        技術(shù)專區(qū)

        關(guān)閉