官术网_书友最值得收藏!

1.6 SM2公鑰加密方案

本節介紹我國商用密碼SM2公鑰加密方案。作為我國的商用密碼行業標準(也是國家標準),SM2在區塊鏈、物聯網等新領域應用廣泛。由于SM2公鑰加密方案的安全性分析沒有公開,本節主要描述SM2公鑰加密方案的構造,不討論其安全性。方案描述如下:

SysGen:輸入安全參數λ,KGC首先選取密碼哈希函數H:{0,1}*→{0,1}z,密鑰派生函數KDF:{0,1}*→{0,1}klen,其中klen為加密消息M的比特長度。選擇橢圓曲線E的一個基點gg的階為p。計算余因子h=#EFq)/p,其中EFq)為Fq上橢圓曲線E的所有有理點組成的集合。最后輸出系統參數SP=(gpH,KDF,h)。

KeyGen:輸入系統參數SP,隨機選取,作為用戶私鑰sk,計算pk=gs,作為用戶公鑰。

Encrypt:設待加密的明文消息為比特串M,接收者公鑰為pk。加密者執行以下運算步驟。

1)選取隨機數

2)計算橢圓曲線點C1=gk=(x1,y1),將C1的數據類型轉換為比特串;

3)計算橢圓曲線點S=pkh,若S為無窮遠點,則報錯并退出;

4)計算橢圓曲線點pkk=(x2,y2),將坐標(x2,y2)的數據類型轉換為比特串;

5)計算t=KDF(x2||y2,klen),若t為全0比特串,則返回到第1步;

6)計算C2=Mt

7)計算C3=Hx2||M||y2);

8)輸出密文C=C1||C2||C3

Decrypt:設待解密密文C=C1||C2||C3,私鑰為sk=s,解密者執行以下運算步驟。

1)從C中取出比特串C1,將C1的數據類型轉換為橢圓曲線上的點,驗證C1是否滿足橢圓曲線方程,若不滿足則報錯并退出;

2)計算橢圓曲線點,若S是無窮遠點,則報錯并退出;

3)計算,將坐標(x2y2)的數據類型轉換為比特串;

4)計算t=KDF(x2||y2,klen),若t為全0比特串,則報錯并退出;

5)從C中取出比特串C2,計算M′=C2t

6)計算μ=Hx2||M′||y2),從C中取出比特串C3,若μC3,則報錯并退出;

7)輸出明文M′。

主站蜘蛛池模板: 长子县| 喀喇| 四平市| 沭阳县| 成都市| 潮州市| 淳化县| 铜川市| 南和县| 班玛县| 丹寨县| 江西省| 虹口区| 蓬安县| 湘潭县| 郸城县| 高州市| 耒阳市| 交口县| 洛浦县| 德保县| 鄢陵县| 明光市| 台南市| 商城县| 灵台县| 临桂县| 石狮市| 揭阳市| 瑞安市| 陇川县| 囊谦县| 西乌珠穆沁旗| 普洱| 广饶县| 兴义市| 津南区| 鄂伦春自治旗| 博罗县| 昌图县| 绥滨县|