国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      實(shí)現(xiàn)OpenSSL支持SM2算法的方法

      文檔序號(hào):8530271閱讀:829來源:國知局
      實(shí)現(xiàn)OpenSSL支持SM2算法的方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)OpenSSL支持SM2算法的方 法。
      【背景技術(shù)】
      [0002] OpenSSL是套開放源代碼的SSL(SecureSocketsLayer,安全套接層)套件, 其不僅提供了基本的傳輸層加密功能,還提供了多種算法支持,多種編碼支持。此外, OpenSSL實(shí)現(xiàn)了ASN. 1的證書和密鑰相關(guān)標(biāo)準(zhǔn),提供了對(duì)證書、公鑰、私鑰、證書請(qǐng)求以及 CRL(CertificateRevocationList,證書撤消列表)等數(shù)據(jù)對(duì)象的DER(Distinguished EncodingRules,唯一編碼規(guī)則)、PEM(PrivacyEnhancedMail,強(qiáng)隱私郵件)和BASE64 的 編解碼功能。OpenSSL提供了產(chǎn)生各種公開密鑰對(duì)和對(duì)稱密鑰的方法、函數(shù)和應(yīng)用程序,同 時(shí)提供了對(duì)公鑰和私鑰的DER編解碼功能。并實(shí)現(xiàn)了私鑰的PKCS#12和PKCS#8的編解碼 功能。OpenSSL在標(biāo)準(zhǔn)中提供了對(duì)私鑰的加密保護(hù)功能,使得密鑰可以安全地進(jìn)行存儲(chǔ)和 分發(fā)。在此基礎(chǔ)上,OpenSSL實(shí)現(xiàn)了對(duì)證書的X. 509標(biāo)準(zhǔn)編解碼、PKCS# 12格式的編解碼以 及PKCS#7的編解碼功能。并提供了一種文本數(shù)據(jù)庫,支持證書的管理功能,包括證書密鑰 產(chǎn)生、請(qǐng)求產(chǎn)生、證書簽發(fā)、吊銷和驗(yàn)證等功能。事實(shí)上,OpenSSL提供的CA應(yīng)用程序就是 一個(gè)小型的CA(認(rèn)證中心,certificateauthority),實(shí)現(xiàn)了證書簽發(fā)的整個(gè)流程和證書管 理的大部分機(jī)制。
      [0003] 非對(duì)稱密鑰算法是指一個(gè)加密算法的加密密鑰和解密密鑰是不一樣的,或者說不 能由其中一個(gè)密鑰推導(dǎo)出另一個(gè)密鑰。非對(duì)稱密鑰也叫公開密鑰加密,它是用兩個(gè)數(shù)學(xué)相 關(guān)的密鑰對(duì)信息進(jìn)行編碼。在此系統(tǒng)中,其中一個(gè)密鑰叫公開密鑰,可隨意發(fā)給期望同密 鑰持有者進(jìn)行安全通信的人。公開密鑰用于對(duì)信息加密。第二個(gè)密鑰是私有密鑰,屬于密 鑰持有者,此人要仔細(xì)保存私有密鑰。密鑰持有者用私有密鑰對(duì)收到的信息進(jìn)行解密。ECC (EllipticCurvesCryptography,橢圓曲線密碼)加密算法是一種公鑰加密算法,與RSA算 法相比,ECC算法可以使用較短的密鑰達(dá)到相同的安全程度。
      [0004] SM2算法是中國自己提出的一種ECC領(lǐng)域下的非對(duì)稱算法,在很多方面都有其應(yīng) 用的需求。SM2作為一個(gè)算法,在應(yīng)用中一般是和數(shù)字證書等結(jié)合起來應(yīng)用,所以一般的應(yīng) 用方式是:將SM2和現(xiàn)有的證書函數(shù)庫、通訊函數(shù)庫結(jié)合起來使用,這樣可以避免大量的編 解碼等方面的開發(fā)工作。
      [0005] ENGINE是0PENSSL預(yù)留的用以加載第三方加密庫引擎,主要包括了動(dòng)態(tài)庫加載的 代碼和加密函數(shù)指針管理的一系列接口。如果要使用Engine,那么首先要加載該Engine, 然后選擇要使用的算法。這樣你的應(yīng)用程序在調(diào)用加解密算法時(shí),它就會(huì)指向你加載的動(dòng) 態(tài)庫里的加解密算法,而不是原先的0PENSSL的庫里的加解密算法。
      [0006] Engine技術(shù)的ECC算法實(shí)現(xiàn)外在替換機(jī)制,支持替換OpenSSL中的ECC算法為外 部實(shí)現(xiàn)的算法代碼,SM2本身是屬于ECC范疇的算法,所以它的算法描述符采用和ECC-樣 的"簽名"算法描述,只是附加額外的曲線參數(shù)來區(qū)別SM2和其他的ECC算法實(shí)現(xiàn),但是由 于SM2的"簽名-摘要"復(fù)合運(yùn)算采用獨(dú)立的算法描述,其分解成"簽名"和"摘要"后,"簽 名"算法描述中沒有曲線參數(shù),因此和原有的ECC算法沖突,不能直接在ECC的Engine技術(shù) 上實(shí)現(xiàn)SM2算法的嵌入。
      [0007] 目前,現(xiàn)有技術(shù)中的一種在OpenSSL中嵌入SM2算法的方法是:直接修改OpenSSL 本身的代碼和流程來實(shí)現(xiàn)。該方法的缺點(diǎn)是:由于要深入OpenSSL本身的架構(gòu),十分繁瑣;
      [0008] 現(xiàn)有技術(shù)中的另一種在OpenSSL中嵌入SM2算法的方法是:通過PMETH和AMETH 的Engine的方式來實(shí)現(xiàn)。該方法的缺點(diǎn)是:在PMETH和AMETH的實(shí)現(xiàn)時(shí),除了要實(shí)現(xiàn)算法 本身外,還需要實(shí)現(xiàn)密鑰編解碼,簽名、加密結(jié)果編解碼等,也比較繁瑣。

      【發(fā)明內(nèi)容】

      [0009] 本發(fā)明的實(shí)施例提供了一種實(shí)現(xiàn)OpenSSL支持SM2算法的方法,以實(shí)現(xiàn)將SM2算 法有效、方便地地嵌入到OpenSSL框架中。
      [0010] 本發(fā)明提供了如下方案:
      [0011] 一種實(shí)現(xiàn)OpenSSL支持SM2算法的方法,包括:
      [0012] 在OpenSSL的代碼文件中增加重命名的摘要算法的算法描述;
      [0013] 在OpenSSL的代碼文件中增加SM2算法的曲線參數(shù)描述及其參數(shù);
      [0014] 在OpenSSL的引擎機(jī)制中增加支持重命名的摘要算法的第一新引擎;
      [0015] 在OpenSSL的引擎機(jī)制中增加對(duì)SM2算法進(jìn)行支持的第二新引擎;
      [0016] 所述第一新引擎在被OpenSSL所調(diào)用時(shí),獲取所述重命名的摘要算法的算法描 述,根據(jù)所述重命名的摘要算法的算法描述通過調(diào)用OpenSSL本身的摘要算法來實(shí)現(xiàn)重命 名的摘要算法;
      [0017] 所述第二新引擎在被OpenSSL所調(diào)用時(shí),獲取所述SM2算法的曲線參數(shù)描述及其 參數(shù),根據(jù)所述SM2算法的曲線參數(shù)描述及其參數(shù)來實(shí)現(xiàn)SM2算法。
      [0018] 在OpenSSL的代碼文件中增加"SM2算法-重命名摘要算法"的混合算法的算法描 述及其分解成重命名的摘要算法和ECC算法的描述。
      [0019] 修改OpenSSL的obj_dat.h和obj_mac.h文件,在obj_dat.h和obj_mac.h文件 中增加"EH_SM2_WITH_摘要算法名"來表示"SM2簽名-摘要"混合運(yùn)算的算法描述;
      [0020] 修改OpenSSL的obj_xref.h文件,在obj_xref.h文件中增加"SM2簽名-摘要" 混合運(yùn)算為ECC算法和重命名摘要算法組成的表示。
      [0021] 所述的在OpenSSL的代碼文件中增加重命名的摘要算法的算法描述,包括:
      [0022] 修改OpenSSL的obj_dat.h和obj_mac.h文件,在所述obj_dat.h和obj_mac.h 文件增加重命名的摘要算法的算法描述。
      [0023] 所述的在OpenSSL的代碼文件中增加SM2算法的曲線參數(shù)描述及其參數(shù),包括:
      [0024] 修改OpenSSL的obj_dat.h和obj_mac.h文件,在所述obj_dat.h和obj_mac.h 文件中增加EH_SM2相關(guān)的定義,用EH_SM2來表示SM2的曲線參數(shù)描述,
      [0025] 修改OpenSSL的ec_curve.c文件,在ec_curve.c文件中增加SM2曲線參數(shù)的值。
      [0026] 所述的第一新引擎在被OpenSSL所調(diào)用時(shí),獲取所述重命名的摘要算法的算法描 述,根據(jù)所述重命名的摘要算法的算法描述通過調(diào)用OpenSSL本身的摘要算法來實(shí)現(xiàn)重命 名的摘要算法,包括:
      [0027] 所述第一新引擎在被OpenSSL所調(diào)用時(shí),獲取所述重命名的摘要算法的算法描 述,利用OpenSSL的Engine機(jī)制,在init()和update()和final()的接口實(shí)現(xiàn)中,分 別調(diào)用OpenSSL本身的內(nèi)部摘要算法來實(shí)現(xiàn)。
      [0028] 所述的第二新引擎在被OpenSSL所調(diào)用時(shí),獲取所述SM2算法的曲線參數(shù)描述及 其參數(shù),根據(jù)所述SM2算法的曲線參數(shù)描述及其參數(shù)來實(shí)現(xiàn)SM2算法,包括:
      [0029] 所述第二新引擎在被OpenSSL所調(diào)用時(shí),獲取所述調(diào)用者傳來的參數(shù),判斷該參 數(shù)如果是新增加的SM2算法的曲線參數(shù)描述,則根據(jù)所述曲線參數(shù)描述來實(shí)現(xiàn)SM2算法,否 則調(diào)用OpenSSL本身的ECC的算法實(shí)現(xiàn)的API來實(shí)現(xiàn)。
      [0030] 所述的方法還包括:
      [0031] 修改OpenSSL的命令代碼,將所述第一新引擎、第二新引擎的啟動(dòng)置于OpenSSL的 中所有其他API調(diào)用之前。
      [0032] 所述的方法還包括:
      [0033] 在OpenSSL的命令或者API調(diào)用時(shí),確定非對(duì)稱算法為SM2算法,摘要算法為重命 名的摘要算法。
      [0034] 由上述本發(fā)明的實(shí)施例提供的技術(shù)方案可以看出,本發(fā)明實(shí)施例提供的實(shí)現(xiàn) OpenSSL支持SM2算法的方法,可以使SM2算法更為容易地和OpenSSL原有的上下層功能結(jié) 合在一起,和原有的其他算法在使用上并不相沖突,從而實(shí)現(xiàn)將SM2算法有效、方便地嵌入 到OpenSSL框架中。
      【附圖說明】
      [0035] 為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用 的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
      [0036] 圖1為本發(fā)明實(shí)施例一提供的一種實(shí)現(xiàn)OpenSSL支持SM2算法的方法的處理流程 圖。
      【具體實(shí)施方式】
      [0037] 為便于對(duì)本發(fā)明實(shí)施例的理解,下面將結(jié)合附圖以幾個(gè)具體實(shí)施例為例做進(jìn)一步 的解釋說明,且各個(gè)實(shí)施例并不構(gòu)成對(duì)本發(fā)明實(shí)施例的限定。
      [0038] 實(shí)施例一
      [0039] 本發(fā)明實(shí)施例用Engine技術(shù)的ECC算法實(shí)現(xiàn)外在替換機(jī)制來實(shí)現(xiàn)SM2算法實(shí)現(xiàn), 以和其他算法和平共處的方式,將SM2算法嵌入到OpenSSL框架中。
      [0040] 該實(shí)施例提供了一種實(shí)現(xiàn)OpenSSL支持SM2算法的方法的處理流程如圖1所示, 包括如下的處理步驟:
      [0041] 步驟S110、在OpenSSL的代碼文件中增加重命名的摘要算法的算法描述。修改 OpenSSL的obj
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1