本發明涉及加密方法領域,特別是一種抗量子計算機攻擊的橢圓曲線簽名方法。
背景技術:
1、橢圓曲線加密算法簡稱ecc,是基于橢圓曲線數學理論實現的一種非對稱加密算法。
2、sm2算法是橢圓曲線算法的一種。目前,sm2公鑰密碼加密方法如下:
3、sm2算法使用素數域256位橢圓方程y2=?x3+?ax?+?b。
4、g(x,y)為橢圓曲線上面的基點,k*g為橢圓曲線上面的點乘計算,其結果仍為橢圓曲線的點。
5、n是一個質數,為點g在橢圓曲線上面的階,n*g?=?∞。
6、原始私鑰d是一個32字節的隨機數,對應的公鑰p?=?d?*?g,為32字節的x,y坐標,通過私鑰d能很便捷地計算出公鑰p,但是給出了公鑰p很難計算出私鑰d。這樣可以對私鑰d進行有效的保護。
7、實踐上,橢圓曲線密碼體制的安全性事給予橢圓曲線離散對數問題的難解性。給定兩個點p?和q?,隸屬于橢圓曲線的子群,這個子群有基點g?且階數是n?,找出整數x?使得滿足等式q=xp?,這個求解過程是相當困難的,但對于量子計算機來說,這種計算困難性是不存在的。存在一種能夠在多項式時間內計算離散對數問題的量子算法:shor's算法,這個算法的時間復雜度是o((logn)3)?和空間復雜度是o(logn)?,雖然量子計算機還遠遠不夠成熟,但商用化的時間已經指日可待,因此研究抗量子計算機攻擊的算法就變得非常緊迫和必要。
技術實現思路
1、本發明針對目前針對目前sm2公鑰密碼加密方法中,通過私鑰d能很便捷地計算出公鑰p,但是給出了公鑰p很難計算出私鑰d,但是用量子計算機卻容易受到攻擊的不足,提供一種抗量子計算機攻擊的橢圓曲線簽名方法,該簽名方法中,改進的思路是實現由公鑰p反推私鑰d的過程由計算困難性轉變為不可計算性。
2、本發明實現其技術目的技術方案是:一種抗量子計算機攻擊的橢圓曲線簽名方法,包括以下步驟:
3、(1)原文為m,原始私鑰為d,公鑰為p(x,y),基點為g(x,y),階為n,a、b為橢圓曲線方程的系數;
4、(2)計算變換后的私鑰為da=?min(h256(h512(d),?rand(n-1)));
5、(3)計算id?=?md5(h512(d)),為16字節用戶標識;
6、(4)計算za?=?h256(0x0080||id||a||b||gx||gy||px||py);
7、(5)計算e?=?h256(za||m);
8、(6)生成隨機數k,在曲線上進行計算k*g?=?t(x,y);
9、(7)計算r?=?(e?+?tx)?mod?n,若r=?0?或r+k?=?n?則返回(6)重新計算;
10、(8)計算s?=?((1?+?da)-1*(k?-?r?*?da))?mod?n?若s?=?0?則返回(6)重新計算,否則將(r,s,id)作為簽名結果;
11、其中h256為256位的哈希函數,h512為512位的哈希函數,md5是信息摘要散列函數,min為最小值函數,rand為隨機數函數,k*g為橢圓曲線上面的點乘計算。
12、進一步的,上述的抗量子計算機攻擊的橢圓曲線簽名方法,簽名結果為(r,s,id)時,簽名的驗簽算法包括以下步驟:
13、(21)?計算t?=?(r?+?s)?mod?n,若t?=?0,則驗證失敗;
14、(22)?計算點s*g+t*p的坐標t(x1,y1);
15、(23)?計算r?=?(e?+?tx1)?mod?n,若r?=?r?則驗證通過,否則驗證失敗;
16、(24)?證明r?=?r的過程:
17、若驗證m與原文一致,且公鑰正確,根據e的生成規則,驗證用的e與簽名時生成的e是一致的;
18、∵?p?=?da*?g,?t?=?(r?+?s)?mod?n
19、∴?t(x1,y1)?=?s*g?+?t*p
20、=?s*g?+?dat*g
21、=?(s?+?dat)*g
22、=?(s?+?sda+?rda)*g
23、=?(s(1+da)?+?rda)*g
24、根據簽名計算過程,s?=?((1?+?da)-1*(k?-?rda))?mod?n,帶入上式:
25、t(x1,y1)?=?(k?-?rda?+?rda)*g?=?k*g?=?t(x,y)
26、∴?r?=?(e?+?tx1)?mod?n?=?(e?+?tx)?mod?n?=?r。
27、由已知公鑰反推出私鑰的過程存在計算困難性,但對于量子計算機來說,這種計算困難性是不存在的,而256位以上的哈希算法則可以抵御量子計算機的攻擊。因此,即使量子計算機使用shor's算法逆向計算出變換后的私鑰da,也不可能推導出原始私鑰d和用戶標識id,從而不可能偽造簽名,實現了根據已知公鑰反推出私鑰的過程由計算困難性轉變為不可計算性。
28、本發明橢圓曲線簽名方法,攻擊者有可能反推出變換后的私鑰da,并進一步偽造簽名(r,s),但由于無法通過計算得到原始私鑰d,從而無法偽造變換后的簽名結果(r,s,id)。本方法在保持橢圓曲線簽名算法簽名時間快、秘鑰和簽名結果短的優勢的同時還可以抵御量子計算機的攻擊。
29、以下將結合實施例,對本發明進行較為詳細的說明。
1.一種抗量子計算機攻擊的橢圓曲線簽名方法,其特征在于:包括以下步驟:
2.根據權利要求1所述的抗量子計算機攻擊的橢圓曲線簽名方法,其特征在于,簽名結果為(r,s,id)時,簽名的驗簽算法包括以下步驟: