<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

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

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

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

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


一、概述

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

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


1、密鑰  key

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


(a)加密和解密變換;


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


(c)數字簽名的生成和驗證。


2、密鑰交換  key exchange

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


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

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


4、從A到B的密鑰確認 key comfirmation from A to B

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


5、密鑰派生函數  key derivation function

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


6、雜湊函數  hash function

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


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


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


7、雜湊值  hash value

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


8、對稱(chēng)密碼算法  symmetric cryptographic algrorithm

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


9、發(fā)起方  initiator

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


10、響應方  responder

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

11、可辨別標識  disdinguishing identifier

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


三、符號

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

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

dA:用戶(hù)A的私鑰。

dB:用戶(hù)B的私鑰。

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

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

G:橢圓曲線(xiàn)的上一個(gè)基點(diǎn),其階為素數。

Hash():密碼雜湊函數。

Hv():消息摘要長(cháng)度為v比特的密碼雜湊函數。

消息摘要百度百科:


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

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

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

IDA,IDB:用戶(hù)A和用戶(hù)B的可辨別標識。

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

KDF():秘鑰派生函數。

modn:模n運算。

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

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

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


PA:用戶(hù)A的公鑰。

PB:用戶(hù)B的公鑰。

q:有限域Fq中元素的數目。

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

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

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

ZA:關(guān)于用戶(hù)A的可辨別標識、部分橢圓曲線(xiàn)系統參數和用戶(hù)A公鑰的雜湊值。

ZB:關(guān)于用戶(hù)B的可辨別標識、部分橢圓曲線(xiàn)系統參數和用戶(hù)B公鑰的雜湊值。

#E(Fq):E(Fq)上點(diǎn)的數目,稱(chēng)為橢圓曲線(xiàn)E(Fq)的階。

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

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

頂函數:大于或等于x的最小整數。

底函數:小于或等于x的最小整數。

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

四、算法參數與輔助函數


1、總則:

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


2、橢圓曲線(xiàn)系統參數:

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


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


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


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


3、用戶(hù)密鑰對

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


用戶(hù)密鑰對的生成算法與公鑰驗證算法應符合第一部分第六章的規定。


4、輔助函數

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


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


密鑰派生函數需要調用秘鑰雜湊函數。

(3)隨機數發(fā)生器:使用國密局規定的隨機數發(fā)生器。


5、用戶(hù)其他信息


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


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

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


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


用戶(hù)A:

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


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


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


用戶(hù)B:

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


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


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


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


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


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


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


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


B8:(選項)按本文第一部分4.2.5和4.2.4給出的方法將RA的坐標x1、y1和RB的坐標x2、y2的數據類(lèi)型轉換為比特串,計算SB==Hash.......;


B9:將RB、(選項SB)發(fā)送給用戶(hù)A;


用戶(hù)A:

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


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


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


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


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


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


A9:(選項)計算S1,并檢驗S1=SB是否成立,若不成立則從B到A的秘鑰確認失??;


A10:(選項)計算SA,并將SA發(fā)送給用戶(hù)B。


用戶(hù)B;

B10:計算S2,并檢驗S2=SA是否成立,若不成立則從A到B的秘鑰確認失敗。



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



、



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

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

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


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



關(guān)鍵詞: sm2

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>