• 
    

    
    

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

      ?

      數(shù)字證書系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2022-09-09 02:17:00楊磊白世坤
      電子技術(shù)與軟件工程 2022年11期
      關(guān)鍵詞:數(shù)字證書乙方公鑰

      楊磊 白世坤

      (中國(guó)電子科技集團(tuán)公司第三十研究所 四川省成都市 610041)

      1 引言

      在實(shí)際的保密通信過程當(dāng)中,甲方如果向乙方發(fā)送加密數(shù)據(jù),首先甲乙雙方需要有一個(gè)共同的加密密鑰,甲乙雙方的一方使用此密鑰加密數(shù)據(jù)然后傳輸,接收方收到加密數(shù)據(jù)后使用此密鑰對(duì)數(shù)據(jù)進(jìn)行解密,解密出數(shù)據(jù)的明文后,甲乙雙方就可以進(jìn)行保密通信,這種保密通信方式在密碼學(xué)當(dāng)中叫做對(duì)稱密碼技術(shù)。

      在對(duì)稱密碼技術(shù)當(dāng)中,由于雙方通信過程中加密通信一直使用同一個(gè)加密密鑰,這種方式很容易被第三方進(jìn)行攻擊演算出加密密鑰,從而導(dǎo)致網(wǎng)絡(luò)傳輸數(shù)據(jù)被竊取,為了解決這個(gè)問題,需要通信雙方在一段時(shí)間內(nèi)更換加密密鑰。在更換密鑰的過程中,使用公鑰密碼技術(shù)進(jìn)行密鑰管理可以保證:加密傳遞的數(shù)據(jù)只能被指定的接收者解密,單個(gè)實(shí)體的失效不能影響其它實(shí)體的安全,密鑰不能擴(kuò)散,密鑰易于傳遞。

      假如甲方使用公鑰密碼技術(shù)對(duì)對(duì)稱密鑰進(jìn)行加密,首先必須知道乙方的公鑰數(shù)據(jù);乙方在加密通信之前向甲方傳遞自己公鑰的過程中,容易受到第三方丙方的監(jiān)視,丙方中途截取乙方的通信信道,用自己的公鑰替換乙方的公鑰,甲方在不知公鑰被替換的情況下,使用丙方的公鑰加密數(shù)據(jù),此數(shù)據(jù)輕而易舉的被丙方截取。

      為了解決上述問題,引入了公鑰基礎(chǔ)設(shè)施(PKI)的概念,公鑰基礎(chǔ)設(shè)施引入受信任的第三方(CA)作為甲方和乙方的共同信任中心,CA 使用自己的私鑰向甲方和乙方簽發(fā)數(shù)字證書。甲方在收到乙方的數(shù)字證書后,使用CA 中心的公鑰對(duì)證書進(jìn)行簽名驗(yàn)證,如果簽名驗(yàn)證通過,則甲方認(rèn)為證書沒有被篡改,乙方的公鑰是安全的。甲方和乙方的加密通信就可以在一個(gè)安全的環(huán)境下進(jìn)行。

      本文的目的就是構(gòu)建一個(gè)輕量級(jí)的證書管理系統(tǒng),用于科學(xué)研究、企業(yè)內(nèi)網(wǎng)或者無法連接互聯(lián)網(wǎng)的企業(yè)機(jī)構(gòu),快速簽發(fā)數(shù)字證書,構(gòu)建內(nèi)部可信通信系統(tǒng)。

      2 公鑰密碼技術(shù)

      公鑰密碼體制是Diffie 和Hellman 在1976年提出的,公鑰密碼技術(shù)在密碼體制中加密和解密采用不同的但是又相關(guān)的密鑰技術(shù)。雖然目前的公鑰算法又很多,但是有一個(gè)共同的特點(diǎn)就是,每個(gè)通信方在進(jìn)行保密通信時(shí)有兩個(gè)相關(guān)的密鑰,其中一個(gè)公開,另外一個(gè)保密存儲(chǔ)。由于公鑰算法比傳統(tǒng)的密碼算法具有更高的復(fù)雜度,因此公鑰密碼加密數(shù)據(jù)的效率比較低,只能對(duì)少量的關(guān)鍵數(shù)據(jù)進(jìn)行加密。所以公鑰密碼技術(shù)在加密、數(shù)字簽名、身份認(rèn)證等很多方面上有廣泛的應(yīng)用。

      公鑰密碼體制是建立在單向陷門函數(shù)(One-way Trapdoor Function)上的,其安全性基于復(fù)雜的數(shù)學(xué)難題。從基于大整數(shù)因子分解的數(shù)學(xué)難題提出RSA 公鑰密碼體制開始,歷經(jīng)基于離散對(duì)數(shù)問題的ElGamal 公鑰密碼體制及其各種變體,到基于橢圓曲線點(diǎn)群的離線對(duì)數(shù)問題的橢圓曲線密碼體制,其中心思想都是高安全性。

      公鑰密碼算法中的公鑰有一個(gè)明顯的有點(diǎn)就是可以公開,只要包含公鑰的證書是可以認(rèn)證的,就可以認(rèn)為公鑰是可信的,以此通過第三方的可信任認(rèn)證機(jī)構(gòu),如證書中心,就可以進(jìn)行安全通信。

      基于以上理論依托,使用公鑰密碼技術(shù)簽發(fā)的數(shù)字證書具有不可偽造性和可認(rèn)證性。

      3 證書編碼規(guī)則

      ASN.1 抽象語法標(biāo)記(Abstract Syntax Notation One)是一種 ISO/ITU-T 標(biāo)準(zhǔn),可以理解與一組語法規(guī)則和一組編碼規(guī)則,數(shù)據(jù)類型的概念是ASN.1 標(biāo)準(zhǔn)的基礎(chǔ)。X.509 證書的編碼和解碼規(guī)則遵循ASN.1 編碼和解碼規(guī)則,證書請(qǐng)求結(jié)構(gòu)的每個(gè)字段都與數(shù)據(jù)類型相關(guān)聯(lián)。

      ASN.1 類型系統(tǒng)中分為基本類型、字符串類型和構(gòu)造類型。其中基本類型包含BIT STRING、BOOLEAN、INTEGER、NULL、OBJECT IDENTIFIER、OCTET STRING,字符串類型包含BMPString、IA5String、PrintableString、TeletexString、UTF8String,構(gòu)造類型包括SEQUENCE、SEQUENCE OF、SET、SET OF、CHOICE。每種類型都有一個(gè)固定編碼標(biāo)記與之對(duì)應(yīng),具體的涉及到的詳細(xì)編碼標(biāo)記可以查看ASN.1 的有關(guān)標(biāo)準(zhǔn)。X.509 證書是使用基本類型、字符串類型和構(gòu)造類型的組合而設(shè)計(jì)的。

      ASN.1 定義了(BER) 的基本編碼規(guī)則、(CER) 規(guī)范編碼規(guī)則、(DER)可辨別編碼規(guī)則,其中DER 是為滿足 X.509規(guī)范的安全數(shù)據(jù)傳輸?shù)囊蠖鴦?chuàng)建的。DER 的編碼規(guī)則遵循標(biāo)記(TAG),長(zhǎng)度(LENGTH)和值(VALUE)規(guī)則,即“TLV”編碼規(guī)則,如下圖1所示,其中TAG 字段就是ASN.1 定義的類型,LENGTH 字段表示VALUE 的長(zhǎng)度,VALUE 字段表示實(shí)際被編碼的數(shù)據(jù),其中VALUE 字段可以嵌套編碼如圖2所示?!癟LV”編碼的規(guī)則可以查閱相關(guān)開放資料,此處不再詳細(xì)論述。

      圖1:“TLV”編碼格式

      圖2:“TLV”編碼嵌套格式

      4 X.509數(shù)字證書

      自 1998年成立以來,X.509 公鑰證書標(biāo)準(zhǔn)的三個(gè)版本不斷發(fā)展,數(shù)據(jù)結(jié)構(gòu)的每個(gè)后續(xù)版本都保留了以前版本中存在的字段,并添加了更多內(nèi)容。X.509 證書是一個(gè)被簽名的數(shù)據(jù)體,公鑰在數(shù)據(jù)體內(nèi)部,簽名值在數(shù)據(jù)體尾部。X.509證書的格式如表1所示。

      表1:證書結(jié)構(gòu)圖

      通過第三小節(jié)的分析,可知X.509 證書是一個(gè)已簽名的數(shù)據(jù)結(jié)構(gòu),用于將公鑰綁定到實(shí)體,X.509 證書的ASN.1 語法表示如下:

      其中待簽名域的ASN.1 語法表示如下:

      上述結(jié)構(gòu)體中的每個(gè)字段都有ASN.1 的基本語法組成。

      版本號(hào):版本號(hào)為固定值,目前有V1,V2,V3。ASN.1語法表示為CertificateVersion :: = INTEGER {v1(0),v2(1),v3(2)}。

      序列號(hào):一個(gè)證書唯一有一個(gè)序列號(hào),由證書頒發(fā)機(jī)構(gòu)產(chǎn)生。ASN.1 語法表示為CertificateSerialNumber :: =INTEGER。

      簽名算法識(shí)別符:標(biāo)識(shí)本證書所用的簽名算法。ASN.1語法表示為

      發(fā)行者名稱:證書頒發(fā)機(jī)構(gòu)的名稱。ASN.1 語法表示為

      有效期:有效期表示證書的開始使用期限和使用截止期限。ASN.1 語法表示為

      主題名稱:證書持有者的名稱。ASN.1 語法表示為

      主題公鑰信息:包含用戶的公鑰數(shù)據(jù)和使用此公鑰數(shù)據(jù)使用的算法。ASN.1 語法表示為

      發(fā)行者唯一標(biāo)識(shí)符:證書頒發(fā)者的唯一標(biāo)識(shí)符,通過此標(biāo)識(shí)符判定證書是否來自于合法的證書簽發(fā)機(jī)關(guān)。

      主題唯一標(biāo)識(shí)符:證書持有者的唯一標(biāo)識(shí)符,通過此標(biāo)識(shí)符可判定證書持有者是否合法。

      擴(kuò)展:擴(kuò)展字段按需填寫,對(duì)證書擴(kuò)展域的定義主要集中在四個(gè)方面:密鑰及其策略擴(kuò)展、屬性擴(kuò)展、證書路徑約束擴(kuò)展、CRL 分布點(diǎn)擴(kuò)展。

      簽名:證書簽發(fā)機(jī)關(guān)使用自身的私鑰對(duì)待簽名域進(jìn)行簽名。

      5 證書系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      證書簽發(fā)系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)就是把證書ASN.1 語法結(jié)構(gòu)表示通過代碼編碼的方式實(shí)現(xiàn)。在編碼過程中,設(shè)計(jì)了前端UI 界面,用于證書簽發(fā)操作員根據(jù)證書簽發(fā)要素輸入證書基本信息;設(shè)計(jì)了證書管理中間件,用于接收前端UI 界面寫入的證書信息并處理,并且把簽發(fā)好的證書信息存入數(shù)據(jù)庫中和推送到前端UI 界面用于操作員下載;設(shè)計(jì)了基礎(chǔ)層軟件接口,此部分功能是證書簽發(fā)的核心,負(fù)責(zé)把ASN.1定義的數(shù)據(jù)類型,通過編碼實(shí)現(xiàn)證書的DER 編碼格式。

      在系統(tǒng)設(shè)計(jì)過程中,通過軟件編程,把前端UI 界面、證書管理中間件、基礎(chǔ)層軟件接口三部分內(nèi)容組合為一個(gè)完整的軟件工程。三部分軟件通過接口互相調(diào)用,在保證軟件軟件接口和軟件框架不變的情況下,通過開發(fā)軟件源代碼,能根據(jù)實(shí)際需求對(duì)軟件功能進(jìn)行動(dòng)態(tài)擴(kuò)展,以滿足不同場(chǎng)景下的使用。

      5.1 應(yīng)用層軟件接口設(shè)計(jì)-證書管理中間件

      證書管理中間件的設(shè)計(jì)包含證書版本號(hào)選擇接口versionSelect()、序列號(hào)產(chǎn)生接口sriealNoGen()、簽名算法使用接口algorithmIdentifier()、發(fā)行者名稱傳入接口issuerSet()、有效期設(shè)置接口validityTime()、主題用戶傳入接口subjectSet()、擴(kuò)展方案?jìng)魅虢涌趀xtensionsSet()、公鑰數(shù)據(jù)傳入接口importPubKey()、非對(duì)稱密鑰產(chǎn)生接口genKeyParis()、待簽名區(qū)封裝接口certificateToBeSigned()、證書簽名接口signData()、證書封裝接口makeCA()。各個(gè)接口的層次關(guān)系如圖3所示。

      圖3:證書簽發(fā)中間件接口層次關(guān)系

      5.2 基礎(chǔ)層軟件接口設(shè)計(jì)

      應(yīng)用層軟件接口面向程序開發(fā)者在簽發(fā)證書時(shí)的直接調(diào)用,在應(yīng)用層軟件接口的下層,不直接和開發(fā)者直接交互的軟件接口是基礎(chǔ)軟件層。基礎(chǔ)軟件層根據(jù)ASN.1 對(duì)X.509 證書對(duì)證書的格式定義,使用ASN.1定義的數(shù)據(jù)類型封裝X.509證書,因此基礎(chǔ)軟件層的主要功能是把ASN.1 定義的數(shù)據(jù)類型通過程序編碼實(shí)現(xiàn),程序在編寫的過程中遵循“TLV”編碼格式?;A(chǔ)軟件中針對(duì)ASN.1 基本類型的基礎(chǔ)軟解定義接口有TLV_BIT_STRING()、TLV_BOOLEAN()、TLV_INTEGER()、TLV_NULL()、TLV_ OBJECT IDENTIFIER()、TLV_ OCTET STRING(),字符串類型軟件接口有TLV_BMPString()、TLV_ IA5String()、TLV_ PrintableString()、TLV_ TeletexString()、TLV_ UTF8String(),構(gòu)造類型軟件接口 為TLV_SEQUENCE()、TLV_SEQUENCE_OF()、TLV_SET()、TLV_SET_OF()和TLV_ CHOICE()。每個(gè)基本類型軟件接口對(duì)應(yīng)ASN.1 定義的數(shù)據(jù)類型,這些基礎(chǔ)軟件接口就猶如大廈的一磚一瓦一樣,構(gòu)成了X.509 證書的基礎(chǔ)。

      5.3 證書簽發(fā)系統(tǒng)設(shè)計(jì)

      圖3的證書簽發(fā)中間件接口對(duì)上向證書簽發(fā)應(yīng)用層軟件提供面向?qū)ο蟮慕涌诨{(diào)用,對(duì)下調(diào)用基礎(chǔ)軟件接口,讓上層應(yīng)用軟件可以根據(jù)不同的證書簽發(fā)需求簽發(fā)不同的DER格式編碼的數(shù)字證書,此程序設(shè)計(jì)既支持用戶使用開源的密碼算法簽發(fā)X.509 數(shù)字證書,又支持用戶自己定義密碼算法簽發(fā)X.509 數(shù)字證書,軟件接口簡(jiǎn)單易用,又靈活多變,可以滿足科研、企業(yè)內(nèi)網(wǎng)或者互聯(lián)網(wǎng)企業(yè)自己構(gòu)建內(nèi)部可信的數(shù)字證書管理系統(tǒng)。軟件接口調(diào)用如圖4所示。

      圖4:軟件接口調(diào)用關(guān)系

      在證書簽發(fā)系統(tǒng)的設(shè)計(jì)中,需要首先建立一個(gè)CA 簽發(fā)中心,CA 簽發(fā)中心對(duì)不同的用戶簽發(fā)一個(gè)證書鏈,證書鏈包含CA 中心的根證書和用戶證書。在用戶使用證書進(jìn)行身份認(rèn)證或者加密時(shí),用戶只需要使用自身存儲(chǔ)的CA 中心根證書來驗(yàn)證對(duì)方的用戶證書就可以證明對(duì)方用戶的可信。具體流程如圖5所示。

      圖5:證書簽發(fā)系統(tǒng)的設(shè)計(jì)

      6 結(jié)束語

      本文通過對(duì)ASN.1 標(biāo)準(zhǔn)的研究和分析,分解出X.509 數(shù)字證書的格式和編碼方式,結(jié)合公鑰密碼技術(shù),設(shè)計(jì)出一套實(shí)用化的輕量級(jí)證書簽發(fā)系統(tǒng)。本軟件可操作性強(qiáng),代碼結(jié)構(gòu)簡(jiǎn)單,通過對(duì)軟件的有限修改,可以設(shè)計(jì)出針對(duì)不同場(chǎng)景下的證書簽發(fā)系統(tǒng),為科研機(jī)構(gòu)或者企業(yè)用戶可信通信提供了極大的便利。

      猜你喜歡
      數(shù)字證書乙方公鑰
      一種基于混沌的公鑰加密方案
      當(dāng)心黑客利用數(shù)字證書的漏洞
      HES:一種更小公鑰的同態(tài)加密算法
      基于數(shù)字證書的軍事信息系統(tǒng)安全防護(hù)方案
      SM2橢圓曲線公鑰密碼算法綜述
      管理好系統(tǒng)中的數(shù)字證書
      電腦迷(2015年7期)2015-05-30 04:50:35
      吉林省支付清算系統(tǒng)參與者數(shù)字證書使用現(xiàn)狀調(diào)查與現(xiàn)存問題分析及建議
      基于格的公鑰加密與證書基加密
      少林秘宗自衛(wèi)術(shù)
      少林與太極(2010年5期)2010-09-12 04:11:52
      少林實(shí)用防衛(wèi)制敵術(shù)
      少林與太極(2009年6期)2009-08-21 02:06:24
      金湖县| 鄱阳县| 石泉县| 普宁市| 农安县| 英山县| 上饶县| 广州市| 同江市| 永靖县| 乌什县| 隆安县| 乾安县| 灯塔市| 乌拉特后旗| 资中县| 四子王旗| 天等县| 航空| 陆良县| 高阳县| 乐山市| 彭州市| 阳朔县| 济源市| 定南县| 池州市| 宁海县| 准格尔旗| 呼伦贝尔市| 白山市| 克什克腾旗| 洞头县| 嵩明县| 始兴县| 岫岩| 九龙县| 武夷山市| 密山市| 攀枝花市| 农安县|