密碼學(xué)基礎(chǔ)(二)數(shù)字證書、密鑰基礎(chǔ)知識(shí)

微信公眾號(hào) 布客說(shuō)
布客說(shuō)
對(duì)于非對(duì)稱加密算法和數(shù)字簽名來(lái)說(shuō),很重要的步驟就是公鑰的分發(fā)。理論上任何人都可以獲取到公開(kāi)的公鑰,然而這個(gè)公鑰文件有可能是偽造的,傳輸過(guò)程中也有可能被篡改,所以一旦公鑰自身出了問(wèn)題,則整個(gè)建立在其上的的安全性將不復(fù)成立。

本文主要簡(jiǎn)述數(shù)字證書和密鑰相關(guān)的一些基礎(chǔ)知識(shí),例如什么是數(shù)字證書?ASN.1是什么?常見(jiàn)的X.509代表什么含義?什么是PKI、PKCS標(biāo)準(zhǔn)?

一、數(shù)字證書

對(duì)于非對(duì)稱加密算法和數(shù)字簽名來(lái)說(shuō),很重要的步驟就是公鑰的分發(fā)。理論上任何人都可以獲取到公開(kāi)的公鑰,然而這個(gè)公鑰文件有可能是偽造的,傳輸過(guò)程中也有可能被篡改,所以一旦公鑰自身出了問(wèn)題,則整個(gè)建立在其上的的安全性將不復(fù)成立。

數(shù)字證書機(jī)制正是可以解決公鑰分發(fā)問(wèn)題,確保所記錄信息的合法性。比如證明某個(gè)公鑰是某個(gè)實(shí)體(個(gè)人或組織)擁有,并且確保任何篡改都能被檢測(cè)出來(lái),從而實(shí)現(xiàn)對(duì)用戶公鑰的安全分發(fā)。

根據(jù)所保護(hù)公鑰的用途,數(shù)字證書可以分為加密數(shù)字證書(Encryption Certificate)和簽名驗(yàn)證數(shù)字證書(Signature Certificate)。

加密數(shù)字證書用來(lái)保護(hù)加密用途的公鑰

簽名驗(yàn)證數(shù)字證書用來(lái)保護(hù)簽名用途的公鑰

兩種類型的公鑰可以同時(shí)放在同一證書中

一般情況下,證書需要由證書認(rèn)證機(jī)構(gòu)(Certification Authority,CA)來(lái)進(jìn)行簽發(fā)和背書。

權(quán)威的商業(yè)證書認(rèn)證機(jī)構(gòu)包括DigiCert、GlobalSign、VeriSign等

用戶也可以自行搭建本地CA系統(tǒng),在私有網(wǎng)絡(luò)中進(jìn)行自有證書的簽發(fā)和背書

二、ASN.1

常見(jiàn)的數(shù)字證書和密鑰都采用了ASN.1格式的語(yǔ)法來(lái)描述結(jié)構(gòu),ASN.1(Abstract Syntax Notation One)是一套標(biāo)準(zhǔn),是描述數(shù)據(jù)的表示、編碼、傳輸、解碼的數(shù)據(jù)格式。它提供了一套正式、無(wú)歧義和精確的規(guī)則以描述獨(dú)立于特定計(jì)算機(jī)硬件的對(duì)象結(jié)構(gòu)。

ASN.1本身只定義了表示信息的抽象句法,但是沒(méi)有限定其編碼的方法。各種ASN.1編碼規(guī)則提供了由ASN.1描述其抽象句法的數(shù)據(jù)的值的傳送語(yǔ)法(具體表達(dá))。ASN.1的標(biāo)準(zhǔn)編碼規(guī)則有:

BER基本編碼規(guī)則(Basic Encoding Rules)

BER(BasicEncoding Rules)是ASN.1中最早定義的編碼規(guī)則,其他編碼規(guī)則是在BER的基礎(chǔ)上添加新的規(guī)則構(gòu)成

BER的語(yǔ)法傳輸格式是TLV三元組<Type,Length,Value>

DER唯一編碼規(guī)則(Distinguished Encoding Rules)

CER規(guī)范編碼規(guī)則(Canonical Encoding Rules)

PER壓縮編碼規(guī)則(Packed Encoding Rules)

XER XML編碼規(guī)則(XML Encoding Rules)

三、X.509證書規(guī)范

X.509是密碼學(xué)里公鑰證書的格式標(biāo)準(zhǔn)。

一個(gè)數(shù)字證書內(nèi)容可能包括證書域(證書的版本、序列號(hào)、簽名算法類型、簽發(fā)者信息、有效期、被簽發(fā)主體、簽發(fā)的公開(kāi)密鑰)、CA對(duì)證書的簽名算法和簽名值等,他們一般就采用X.509規(guī)范編寫。

證書格式:X.509規(guī)范中一般推薦使用PEM(Privacy Enhanced Mail)格式來(lái)存儲(chǔ)證書相關(guān)的文件。

證書文件的文件名后綴一般為.crt或.cer

對(duì)應(yīng)私鑰文件的文件名后綴一般為.key

證書請(qǐng)求文件的文件名后綴為.csr

有時(shí)候也統(tǒng)一用.pem作為文件名后綴

PEM格式采用文本方式進(jìn)行存儲(chǔ),一般包括首尾標(biāo)記和內(nèi)容塊,內(nèi)容塊采用Base64格式編碼,示例如下:

1.png

目前使用最廣泛的標(biāo)準(zhǔn)為ITU和ISO聯(lián)合制定的X.509的v3版本規(guī)范(RFC 5280),其中定義了如下證書信息域:

版本號(hào)(Version Number):規(guī)范的版本號(hào)(目前為版本3,值為0x2)

序列號(hào)(Serial Number):由CA維護(hù)的為它所頒發(fā)的每個(gè)證書分配的唯一的序列號(hào),用來(lái)追蹤和撤銷證書

簽名算法(Signature Algorithm ID):簽名所采用的算法

頒發(fā)者(Issuer Name):頒發(fā)證書單位的信息,如C=CN,ST=Shanghai,L=Shanghai,O=org.aurthur.cn,CN=ca.org.aurthur.aurthur

有效期(Period of validity):證書的有效期限,如Not Before 2020-08-08-00-00UTC,Not After 20230-08-08-00-00UTC

被簽發(fā)主體(Subject Name):證書擁有者的標(biāo)識(shí)信息(Distinguished Name),如C=CN,ST=Shanghai,L=Shanghai,CN=p1.org.aurthur.cn

主體的公鑰信息(Subject Public Key Info):所保護(hù)的公鑰相關(guān)的信息

公鑰算法(Public Key Algorithm):公鑰采用的算法

主體公鑰(Subject Public Key):公鑰的內(nèi)容

頒發(fā)者唯一號(hào)(Issuer Unique Identifier,可選):代表頒發(fā)者的唯一信息,僅2、3版本支持(可選)

主體唯一號(hào)(Subject Unique Identifier,可選):代表?yè)碛凶C書實(shí)體的唯一信息,僅2、3版本支持(可選)

擴(kuò)展(Extensions,可選):可選的一些擴(kuò)展,可能包括:

Subject Key Identifier:實(shí)體的密鑰標(biāo)識(shí)符,區(qū)分實(shí)體的多對(duì)密鑰

Basic Constraints:一般指明該證書是否屬于某個(gè)CA

Authority Key Identifier:頒發(fā)這個(gè)證書的頒發(fā)者的公鑰標(biāo)識(shí)符

Authority Information Access:頒發(fā)相關(guān)的服務(wù)地址,如頒發(fā)者證書獲取地址和吊銷證書列表信息查詢地址

CRL Distribution Points:證書注銷列表的發(fā)布地址

Key Usage:表明證書的用途或功能信息,如Digital Signature、Key CertSign

Subject Alternative Name:證書身份實(shí)體的別名

證書簽名算法(Certificate Signature Algorithm):證書簽名所用的算法

證書簽名(Certificate Signature):證書的簽名

X.509標(biāo)準(zhǔn)圖解:

2.png

四、PKI體系

按照X.509規(guī)范,公鑰可以通過(guò)證書機(jī)制來(lái)進(jìn)行保護(hù),但證書的生成、分發(fā)、撤銷等步驟并未涉及。

PKI(Public Key Infrastructure)體系解決了證書生命周期相關(guān)的認(rèn)證和管理問(wèn)題,定義了安全地管理、分發(fā)證書需要遵循的標(biāo)準(zhǔn)。

PKI是建立在公私鑰基礎(chǔ)上實(shí)現(xiàn)安全可靠傳遞消息和身份確認(rèn)的一個(gè)通用框架,并不代表某個(gè)特定的密碼學(xué)技術(shù)和流程,實(shí)現(xiàn)了PKI規(guī)范的平臺(tái)可以安全可靠地管理網(wǎng)絡(luò)中用戶的密鑰和證書。

一個(gè)完備PKI體系應(yīng)該包括如下組件:

數(shù)字證書:包含了用于簽名和加密數(shù)據(jù)的公鑰的電子憑證,是PKI的核心元素

認(rèn)證中心(CA):數(shù)字證書的申請(qǐng)及簽發(fā)機(jī)關(guān),CA必須具備權(quán)威性

證書資料庫(kù):存儲(chǔ)已簽發(fā)的數(shù)字證書和公鑰,以及相關(guān)證書目錄,用戶可由此獲得所需的其他用戶的證書及公鑰

證書吊銷列表(CRL)/OCSP:在有效期內(nèi)吊銷的證書列表,OCSP(在線證書狀態(tài)協(xié)議)是獲得證書狀態(tài)的國(guó)際協(xié)議

密鑰備份及恢復(fù):為避免因用戶丟失解密密鑰而無(wú)法解密合法數(shù)據(jù)的情況,PKI應(yīng)提供備份與恢復(fù)密鑰的機(jī)制

PKI應(yīng)用接口(API):為應(yīng)用提供安全、一致、可信的方式與PKI交互

五、PKCS標(biāo)準(zhǔn)

PKCS全稱是Public-Key Cryptography Standards(公鑰加密標(biāo)準(zhǔn)),是由RSA實(shí)驗(yàn)室與其它安全系統(tǒng)開(kāi)發(fā)商為促進(jìn)公鑰密碼的發(fā)展而制訂的一系列標(biāo)準(zhǔn),PKCS目前共發(fā)布過(guò)15個(gè)標(biāo)準(zhǔn)。

我們現(xiàn)在所常用的RSA密碼算法就是PKCS#1標(biāo)準(zhǔn)實(shí)現(xiàn)的算法,一般使用1.5版本的。

3_副本.jpg

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論