• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于國(guó)密算法的證書(shū)簽名值驗(yàn)證的分析

      2019-05-24 14:11:40華嬌王婭男
      電腦知識(shí)與技術(shù) 2019年4期
      關(guān)鍵詞:數(shù)字簽名

      華嬌 王婭男

      摘要:在國(guó)家已經(jīng)大力推行性能更優(yōu)更安全的SM2公鑰密碼算法的背景下,基于國(guó)密算法的證書(shū)也將越來(lái)越廣泛地被采用,則證書(shū)的合法性需要驗(yàn)證,因此本文主要研究了如何驗(yàn)證SM2證書(shū)的簽名值。通過(guò)研究SM2證書(shū)的結(jié)構(gòu),獲取簽名原文數(shù)據(jù)和簽名數(shù)據(jù),使用基于SM3摘要算法的SM2算法實(shí)現(xiàn)驗(yàn)證簽名值。文中選取了示例證書(shū)進(jìn)行驗(yàn)證,且驗(yàn)證結(jié)果通過(guò)。

      關(guān)鍵詞:國(guó)密算法;數(shù)字簽名;根證書(shū);橢圓曲線(xiàn)

      中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2019)04-0034-02

      1 引言

      隨著計(jì)算機(jī)技術(shù)及密碼技術(shù)的飛速發(fā)展,1024位RSA算法這一目前常用的算法已經(jīng)面臨嚴(yán)重的安全威脅,因此2010年12月17日國(guó)家密碼管理部門(mén)經(jīng)過(guò)研究,決定采用SM2橢圓曲線(xiàn)公鑰密碼算法來(lái)替換RSA算法。SM2算法相較于RSA算法來(lái)說(shuō),密碼復(fù)雜度更高、處理速度更快、機(jī)器性能消耗更小,整體來(lái)說(shuō)性能更優(yōu)更安全。

      目前來(lái)說(shuō),大多數(shù)情況下常使用的X509證書(shū)仍是基于RSA算法的,但既然國(guó)家已經(jīng)在大力推行國(guó)密算法,未來(lái)的各種基于PBOC3.0的IC卡也都是支持國(guó)密算法的,那基于國(guó)密算法的證書(shū)也將越來(lái)越廣泛地被采用,因此本文研究一下如何驗(yàn)證SM2國(guó)密證書(shū)的合法性。

      2 SM2證書(shū)介紹

      SM2證書(shū)與RSA等其他數(shù)字證書(shū)相同點(diǎn)有:均使用ASN.1編碼;數(shù)據(jù)格式均使用通用的TLV(Tag Length Value)形式(T為類(lèi)型標(biāo)識(shí)符,L為長(zhǎng)度值標(biāo)識(shí)符,V代表實(shí)際數(shù)據(jù)。數(shù)字證書(shū)中的所有項(xiàng)都有對(duì)應(yīng)的類(lèi)型。完整的證書(shū)數(shù)據(jù)是一個(gè)TLV,而 V由多個(gè)TLV組合而成);均包含證書(shū)版本、序列號(hào)、頒發(fā)者、使用者主體信息、使用者公鑰、有效期、證書(shū)擴(kuò)展項(xiàng)等內(nèi)容;均以二進(jìn)制或Base64格式存放。

      SM2證書(shū)與RSA證書(shū)不同的是SM2證書(shū)的公鑰算法是使用ECC算法的Oid標(biāo)識(shí)(1.2.840.10045.2.1),公鑰參數(shù)使用SM2國(guó)密算法的Oid標(biāo)識(shí)(1.2.156.10197.1.301)。

      3 橢圓曲線(xiàn)算法原理

      橢圓曲線(xiàn)是指在射影平面上滿(mǎn)足齊次方程Weierstrass方程的所有點(diǎn)的集合,( Weierstrass方程即:Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3),并且橢圓曲線(xiàn)上的每個(gè)點(diǎn)都是非奇異(或光滑)的,在數(shù)學(xué)中,非奇異或光滑的指曲線(xiàn)上任意一點(diǎn)的偏導(dǎo)數(shù)不能同時(shí)都為0。下圖左為一個(gè)橢圓曲線(xiàn)的示例;而用于密碼學(xué)中的橢圓曲線(xiàn)與一般橢圓曲線(xiàn)不同的是它是離散的點(diǎn),是不連續(xù)的,因此它需要定義在只由有限個(gè)元素組成的有限域上。下圖右為例。

      橢圓加密算法是建立在橢圓曲線(xiàn)離散對(duì)數(shù)問(wèn)題這一數(shù)學(xué)難題之上的密碼體制。所謂橢圓曲線(xiàn)離散對(duì)數(shù)問(wèn)題即在橢圓曲線(xiàn)上給定兩個(gè)點(diǎn)K和G,若使K=kG,求整數(shù)k;這相對(duì)于給定橢圓曲線(xiàn)上的一個(gè)點(diǎn)G,并選取一個(gè)整數(shù)k,求解橢圓曲線(xiàn)上的另一個(gè)點(diǎn)K=kG來(lái)說(shuō)是一個(gè)難題。在K=kG中,橢圓曲線(xiàn)上的點(diǎn)K為公鑰(這個(gè)點(diǎn)在OpenSSL里面是用結(jié)構(gòu)體EC_Point來(lái)表示),整數(shù)k(實(shí)際上是一個(gè)大整數(shù))則為私鑰。

      利用橢圓曲線(xiàn)進(jìn)行加密通信的過(guò)程如下圖所示:

      1)接收方選取橢圓曲線(xiàn)Ep(a,b)上的一點(diǎn)G作為基點(diǎn)并選擇一個(gè)私有密鑰k,生成公開(kāi)密鑰K=kG,將Ep(a,b)和點(diǎn)K,G一起傳給發(fā)送方。

      2)發(fā)送方收到橢圓曲線(xiàn)信息后將待傳輸?shù)拿魑木幋a到曲線(xiàn)上的一點(diǎn)M,產(chǎn)生一個(gè)隨機(jī)整數(shù)r,計(jì)算點(diǎn)C1=M+rK;C2=rG,并將C1、C2傳給接收方。

      3)接收方收到信息后計(jì)算M=C1-kC2,再解碼M得到的就是明文。

      如果有其他用戶(hù)看到這個(gè)加密通信過(guò)程中,那么其他用戶(hù)只能看到Ep(a,b)、K、G、C1、C2,而并不能得到明文信息,因?yàn)橄胍ㄟ^(guò)K、G 求k 或通過(guò)C2、G求r 都是相對(duì)困難的。

      因此橢圓加密算法與一般非對(duì)稱(chēng)密鑰體系的驗(yàn)簽方法對(duì)比除了需要私鑰與公鑰以外,還需要私鑰與公鑰對(duì)應(yīng)的橢圓曲線(xiàn),因?yàn)楹灻万?yàn)簽的過(guò)程中用到涉及橢圓曲線(xiàn)得多倍點(diǎn)的乘法。所以?xún)H僅知道公鑰和私鑰是不能調(diào)用OpenSSL自帶的簽名和驗(yàn)簽API來(lái)實(shí)現(xiàn)橢圓加密算法的簽名驗(yàn)證的,還需要知道對(duì)應(yīng)的橢圓曲線(xiàn)。

      4 簽名值驗(yàn)證

      驗(yàn)證證書(shū)的合法性主要是解析證書(shū)、驗(yàn)證證書(shū)的有效期、驗(yàn)證頒發(fā)機(jī)構(gòu)根證書(shū)、驗(yàn)證CRL吊銷(xiāo)狀態(tài)以及使用目的等。本文主要研究證書(shū)中簽名數(shù)據(jù)的有效性驗(yàn)證。前面已經(jīng)了解了SM2證書(shū)的結(jié)構(gòu),那么可以根據(jù)ASN.1語(yǔ)法和對(duì)象標(biāo)識(shí)符來(lái)獲取相應(yīng)數(shù)據(jù),證書(shū)的第一個(gè)數(shù)據(jù)塊是證書(shū)的實(shí)際內(nèi)容,即為簽名數(shù)據(jù)原文;第二個(gè)數(shù)據(jù)塊是證書(shū)使用的簽名算法,SM2證書(shū)配套的簽名算法是基于SM3摘要算法的SM2簽名算法,算法Oid標(biāo)識(shí)為1.2.156.10197.1.501;證書(shū)的最后一個(gè)數(shù)據(jù)塊就是證書(shū)的簽名數(shù)據(jù),簽名數(shù)據(jù)由兩個(gè)BigInteger大數(shù)組成,再使用Der編碼存放。一般來(lái)說(shuō),證書(shū)的簽名數(shù)據(jù)都是其上級(jí)根證書(shū)私鑰簽名的,故需要使用上級(jí)根證書(shū)公鑰進(jìn)行驗(yàn)證,而頂級(jí)根證書(shū)的簽名數(shù)據(jù)是自簽名的,故需要使用自身的證書(shū)公鑰進(jìn)行驗(yàn)證。

      本文選取了樣例證書(shū)進(jìn)行了驗(yàn)證,首先解析TLV結(jié)構(gòu)獲取證書(shū)的簽名原文數(shù)據(jù)和簽名值數(shù)據(jù),其中簽名值數(shù)據(jù)為封裝的ECC簽名數(shù)據(jù)塊,需要解析后取出兩個(gè)大整數(shù),即曲線(xiàn)上點(diǎn)的X、Y坐標(biāo),如下圖中選中的數(shù)據(jù)即為簽名值數(shù)據(jù):

      驗(yàn)證簽名第一步需要組建數(shù)據(jù)ZA并計(jì)算其HASH值A(chǔ):

      ZA=用戶(hù)ID的長(zhǎng)度+用戶(hù)ID+橢圓曲線(xiàn)公鑰密碼算法推薦曲線(xiàn)參數(shù)a+橢圓曲線(xiàn)公鑰密碼算法推薦曲線(xiàn)參數(shù)b+橢圓曲線(xiàn)公鑰密碼算法推薦曲線(xiàn)參數(shù)Gx+橢圓曲線(xiàn)公鑰密碼算法推薦曲線(xiàn)參數(shù)Gy+公鑰X+公鑰Y;

      HashA=SM3摘要算法(ZA);

      第二步,上面的SM3結(jié)果加上證書(shū)實(shí)際內(nèi)容數(shù)據(jù)M,再進(jìn)行SM3計(jì)算得到HASH值B:

      HashB=SM3摘要算法(HashA + M);

      最后使用公鑰驗(yàn)簽。

      其中,曲線(xiàn)參數(shù)使用的國(guó)密推薦256位曲線(xiàn)參數(shù),具體值如下:

      5 結(jié)論

      按照上述驗(yàn)證方法驗(yàn)證了示例證書(shū)的簽名值、上級(jí)根證書(shū)的簽名值以及頂極根證書(shū)的自簽名值,均驗(yàn)證通過(guò)。

      正確的驗(yàn)證SM2證書(shū)的合法性有利于國(guó)密算法的推廣使用,則在應(yīng)用中的秘鑰生成速度和加解密速度均能達(dá)到更優(yōu)。

      參考文獻(xiàn):

      [1] DayThinking. ECC算法原理的認(rèn)識(shí).https://blog.csdn.net/sszgg2006/article/details/41945163,2014.

      [2] jonllen. SM2國(guó)密算法證書(shū)解析.(1998-08-16).[1998-10-04].http://www.cajcd.edu.cn/pub/wml.txt/980810-2.html,

      [3] 方娜. 基于橢圓曲線(xiàn)的電子簽章系統(tǒng)的研究與應(yīng)用[D]. 貴州大學(xué), 2007.

      【通聯(lián)編輯:唐一東】

      猜你喜歡
      數(shù)字簽名
      基于正交拉丁方理論的數(shù)字簽名分組批量驗(yàn)證
      交通運(yùn)輸行業(yè)數(shù)字簽名系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)分析
      淺析計(jì)算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
      數(shù)字簽名助力系統(tǒng)安全
      基于數(shù)字簽名的QR碼水印認(rèn)證系統(tǒng)
      數(shù)字簽名簡(jiǎn)述
      掌握方法用好數(shù)字簽名
      基于數(shù)字簽名和HSM的數(shù)據(jù)庫(kù)篡改檢測(cè)機(jī)制
      基于JAVA的數(shù)字簽名設(shè)計(jì)與實(shí)現(xiàn)
      復(fù)制數(shù)字簽名,巧妙偽裝病毒
      怀化市| 合作市| 廊坊市| 兴业县| 高安市| 湛江市| 永嘉县| 尖扎县| 永顺县| 墨竹工卡县| 弥渡县| 彰化县| 华坪县| 玛曲县| 江安县| 太康县| 临澧县| 保康县| 尼木县| 保定市| 巫溪县| 云阳县| 双江| 通榆县| 勐海县| 白城市| 西贡区| 漳浦县| 西和县| 石楼县| 益阳市| 西丰县| 虞城县| 杭锦后旗| 东阿县| 资兴市| 大港区| 光泽县| 长丰县| 东山县| 石棉县|