日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数字证书——密码学笔记(六)

發(fā)布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数字证书——密码学笔记(六) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、數(shù)字證書

數(shù)字證書可用于:發(fā)送安全電子郵件、訪問安全站點、網(wǎng)上證券、網(wǎng)上招標采購、網(wǎng)上簽約、網(wǎng)上辦公、網(wǎng)上繳費、網(wǎng)上稅務(wù)等網(wǎng)上安全電子事務(wù)處理和安全電子交易活動。?

數(shù)字證書的格式一般采用X.509國際標準。目前,數(shù)字證書認證中心主要簽發(fā)安全電子郵件證書、個人和企業(yè)身份證書、服務(wù)器證書以及代碼簽名證書等幾種類型證書。

數(shù)字證書的格式遵循ITUTX.509國際標準。

1.1 證書結(jié)構(gòu)

證書結(jié)構(gòu)

基本證書域(TBSCertificate

簽名算法域(signatureAlgorithm

簽名值域(signatureValue

1.2 基本證書域結(jié)構(gòu)

名稱

描述

說明

version

版本號

?

serialNumber

序列號

?

signature

簽名算法

?

issuer

頒發(fā)者

?

validity

有效日期

?

subject

主體

?

subjectPublicKeyInfo

主體公鑰信息

?

issuerUniqueID

頒發(fā)者唯一標識符

本標準中不使用

subjectUniqueID

主體唯一標識符

本標準中不使用

extensions

擴展項

按本標準的擴展項進行定義,參考下一節(jié)

1.3 標準的擴展域結(jié)構(gòu)

名稱

描述

關(guān)鍵度

authorityKeyIdentifier

機構(gòu)密鑰標識符

非關(guān)鍵

subjectKeyIdentifier

主體密鑰標識符

非關(guān)鍵

keyUsage

密鑰用法

雙證書標記為關(guān)鍵,單證書標記為非關(guān)鍵

extKeyUsage

擴展密鑰用途

如果密鑰的用法只限于所指示的用途時標記為關(guān)鍵,否則標記為非關(guān)鍵

privateKeyUsagePeriod

私有密鑰使用期

非關(guān)鍵

certificatePolicies

證書策略

非關(guān)鍵

policyMappings

策略映射

如果證書用戶需要正確解釋發(fā)布的CA設(shè)定的規(guī)則時標識為關(guān)鍵,否則標識為非關(guān)鍵

subjectAltName

主體替換名稱

非關(guān)鍵

issuerAltName

頒發(fā)者替換名稱

非關(guān)鍵

subjectDirectoryAttributes

主體目錄屬性

非關(guān)鍵

basicConstraints

基本限制

CA證書標記為關(guān)鍵,終端實體證書標記為非關(guān)鍵

nameConstraints

名稱限制

如果證書用戶系統(tǒng)應(yīng)檢驗所處理的認證路徑與此擴展中的值是否一致時標記為關(guān)鍵,否則標記為非關(guān)鍵

policyConstraints

策略限制

如果證書用戶需要正確地解釋認證機構(gòu)CA設(shè)定的規(guī)則時標識為關(guān)鍵,否則標識為非關(guān)鍵

CRLDistributionPoints

CRL分發(fā)點

非關(guān)鍵

inhibitAnyPolicy

限制所有策略

如果證書用戶需要正確地解釋認證機構(gòu)CA設(shè)定的規(guī)則時標識為關(guān)鍵,否則標識為非關(guān)鍵

freshestCRL

最新的CRL

非關(guān)鍵

id-pkix

私有的 Internet 擴展

非關(guān)鍵

authorityInfoAccess

機構(gòu)信息訪問

非關(guān)鍵

SubjectInformationAccess

主體信息訪問

非關(guān)鍵

IdentifyCardNumber

個人身份證號碼

非關(guān)鍵

InuranceNumber

個人社會保險號

非關(guān)鍵

ICRegistrationNumber

企業(yè)工商注冊號

非關(guān)鍵

OrganizationCode

企業(yè)組織機構(gòu)代碼

非關(guān)鍵

TaxationNumber

企業(yè)稅號

非關(guān)鍵

二、X.509數(shù)字證書的編碼

X.509證書的結(jié)構(gòu)是用ASN1(Abstract Syntax Notation One)進行描述數(shù)據(jù)結(jié)構(gòu),并使用ASN1語法進行編碼。

ASN1采用一個個的數(shù)據(jù)塊來描述整個數(shù)據(jù)結(jié)構(gòu),每個數(shù)據(jù)塊都有四個部分組成:

數(shù)據(jù)塊數(shù)據(jù)類型標識(一個字節(jié))
數(shù)據(jù)塊長度(1-128個字節(jié))
數(shù)據(jù)塊的值

數(shù)據(jù)塊結(jié)束標識(可選)


1.數(shù)據(jù)塊數(shù)據(jù)類型標識(一個字節(jié))

數(shù)據(jù)類型包括簡單類型和結(jié)構(gòu)類型。

簡單類型是不能再分解類型,如整型(INTERGER)、比特串(BIT STRING)、字節(jié)串(OCTET STRING)、對象標識符(OBIECT IDENTIFIER)、日期型(UTCTime)等

結(jié)構(gòu)類型是由簡單類型和結(jié)構(gòu)類型組合而成的,如順序類型(SEQUENCE,SEQUENCE OF)、選擇類型(CHOICE)、集合類型(SET)等。

  • 順序類型的數(shù)據(jù)塊值由按給定順序成員成員數(shù)據(jù)塊值按照順序組成
  • 選擇類型的數(shù)據(jù)塊值由多個成員數(shù)據(jù)數(shù)據(jù)塊類型中選擇一個的數(shù)據(jù)塊值
  • 集合數(shù)據(jù)塊類型由成員數(shù)據(jù)塊類型的一個或多個值構(gòu)成

這個標識字節(jié)的結(jié)構(gòu)如下:

1.1 Bite-bit 7

用來表示TAG類型,共有四種,分別是universal(00)、application(01)、context-specific(10)和private(11)。

這兩位為universal(00)時,bit5-bit1的值表示不同的universal的值:

? ? ? ? ? ? 標記(TAG) ? ?對應(yīng)類型

[UNIVERSAL 1] BOOLEAN [有兩個值:falsetrue]

[UNIVERSAL 2] INTEGER [整型值]

[UNIVERSAL 3] BIT STRING [0位或多位]

[UNIVERSAL 4] OCTET STRING [0字節(jié)或多字節(jié)]

[UNIVERSAL 5] NULL

[UNIVERSAL 6] OBJECT IDENTIFIER [相應(yīng)于一個對象的獨特標識數(shù)字]

[UNIVERSAL 7] OBJECT DESCRIPTOR ?[一個對象的簡稱]

[UNIVERSAL 8] EXTERNAL, INSTANCE OF [ASN.1沒有定義的數(shù)據(jù)類型]

[UNIVERSAL 9] REAL [實數(shù)值]

[UNIVERSAL 10] ENUMERATED [數(shù)值列表,這些數(shù)據(jù)每個都有獨特的標識符,作為ASN.1定義數(shù)據(jù)類型的一部分]

[UNIVERSAL 12] UTF8String

[UNIVERSAL 13] RELATIVE-OID

[UNIVERSAL 16]SEQUENCE,SEQUENCE OF [有序數(shù)列,SEQUENCE里面的每個數(shù)值都可以是不同類型的,而SEQUENCE OF里是0個或多個類型相同的數(shù)據(jù)]

[UNIVERAL 17]SET,SET OF[無序數(shù)列,SET里面的每個數(shù)值都可以是不同類型的,而SET OF 里是0個或多個類型相同的數(shù)據(jù)]

[UNIVERSAL 18] NumericString [09以及空格]

[UNIVERSAL 19] PrintableString [A-Za-z0-9、空格以及符號'()+,-./:=?]

[UNIVERSAL 20] TeletexString, T61String

[UNIVERSAL 21] VideotexString

[UNIVERSAL 22] IA5String

[UNIVERSAL 23] UTCTime [統(tǒng)一全球時間格式]

[UNIVERSAL 24] GeneralizedTime

[UNIVERSAL 25] GraphicString

[UNIVERSAL 26] VisibleString, ISO646String

[UNIVERSAL 27] GeneralString

[UNIVERSAL 28] UniversalString

[UNIVERSAL 29] CHARACTER STRING

[UNIVERSAL 30] BMPString

[UNIVERSAL 31]... reserved for future use

這兩位為context-specific(10)時,bit5-bit1的值表示特殊內(nèi)容:

? ? ? ? ? ??[0] -- 表示證書的版本
? ? ? ? ? ? [1] -- issuerUniqueID,表示證書發(fā)行者的唯一id
? ? ? ? ? ? ? ?[2] -- subjectUniqueID,表示證書主體的唯一id

? ? ? ? ? ? ? ?[3] -- 表示證書的擴展字段

1.2 bit6

表示是否為結(jié)構(gòu)類型(1位結(jié)構(gòu)類型,0則表明編碼類型是簡單類型)。

1.3 bit5-bit1

是類型的TAG值。根據(jù)bit8-bit7的不同值有不同的含義,具體含義見上面的描述。

如SEQUENCE類型數(shù)據(jù)塊,其TAG類型位UNIVESAL(00),屬于結(jié)構(gòu)類型(1),TAG的值為16(10000),所以其類型標示字段值為(10100011),即為0xA3。

2. 數(shù)據(jù)塊長度(1-128個字節(jié))

長度字段,有兩種編碼格式。

若長度值小于等于127,則用一個字節(jié)表示,bit8=0,bit7-bit1存放長度值;

若長度值大于127,則用多個字節(jié)表示,可以有2到127個字節(jié)。第一個字節(jié)的第8位為1,其它低7位給出后面該域使用的字節(jié)的數(shù)量,從該域第二個字節(jié)開始給出數(shù)據(jù)的長度,高位優(yōu)先。

還有一種特殊情況,這個字節(jié)為0x80,表示數(shù)據(jù)塊長度不定,由數(shù)據(jù)塊結(jié)束標識結(jié)束數(shù)據(jù)塊。

3. 數(shù)據(jù)塊的值

存放數(shù)據(jù)塊的值,具體編碼隨數(shù)據(jù)塊類型不同而不同。

4. 數(shù)據(jù)塊結(jié)束標識(可選)

結(jié)束數(shù)據(jù)塊的值,兩個字節(jié)(0x0000),只有在長度值為不定時才會出現(xiàn)。

三、X.509證書的結(jié)構(gòu)

1. X.509證書基本部分

1.1 版本號 ? ?

? ? ? 標識證書的版本(版本1、版本2或是版本3) ? ?

1.2 序列號

? ? ? 標識證書的唯一整數(shù),由證書頒發(fā)者分配的本證書的唯一標識符。

1.3 簽名

? ? ? 用于簽證書的算法標識,由對象標識符加上相關(guān)的參數(shù)組成,用于說明本證書所用的數(shù)字簽名算法。例如,SHA-1和RSA的對象標識符就用來說明該數(shù)字簽名是利用RSA對SHA-1雜湊加密。

1.4 頒發(fā)者

? ? ? 證書頒發(fā)者的可識別名(DN)

1.5 有效期

? ? ? 證書有效期的時間段。本字段由“Not Before”和“Not After”兩項組成,它們分別由UTC時間或一般的時間表示(在RFC2459中有詳細的時間表示規(guī)則)。

1.6 主體

? ? ? 證書擁有者的可識別名,這個字段必須是非空的,除非你在證書擴展中有別名。

1.7 主體公鑰信息

? ? ? 主體的公鑰(以及算法標識符)

1.8 頒發(fā)者唯一標識符

? ? ? 標識符——證書頒發(fā)者的唯一標識符,僅在版本2和版本3中有要求,屬于可選項。

1.9 主體唯一標識符

? ? ? 證書擁有者的唯一標識符,僅在版本2和版本3中有要求,屬于可選項。

2. X.509擴展部分

可選的標準和專用的擴展(僅在版本2和版本3中使用),擴展部分的元素都有這樣的結(jié)構(gòu):

?? ExtensiExtension?::=?SEQUENCE?{ ??????? exextnID????? OBJECT IDENTIFIER, ??????? crcritical??? BOOLEAN DEFAULT FALSE, ??????? exextnValue?? OCTET STRING?}extnID:表示一個擴展元素的OID
critical:表示這個擴展元素是否極重要

extnValue:表示這個擴展元素的值,字符串類型

擴展部分包括:

2.1 發(fā)行者密鑰標識符

? ? ? 證書所含密鑰的唯一標識符,用來區(qū)分同一證書擁有者的多對密鑰。

2.2 密鑰使用

? ? ? 一個比特串,指明(限定)證書的公鑰可以完成的功能或服務(wù),如:證書簽名、數(shù)據(jù)加密等。

? ? ? 如果某一證書將KeyUsage擴展標記為“極重要”,而且設(shè)置為“KeyCertSign”,則在SSL通信期間該證書出現(xiàn)時將被拒絕,因為該證書擴展表示相關(guān)私鑰應(yīng)只用于簽寫證書,而不應(yīng)該用于SSL。

2.3 CRL分布點

? ? ? 指明CRL的分布地點。

2.4 私鑰的使用期

? ? ? 指明證書中與公鑰想聯(lián)系的私鑰的使用期限,它也有Not Before和Not After組成。若此項不存在時,公私鑰的使用期是一樣的。

2.5 證書策略

? ? ? 由對象標識符和限定符組成,這些對象標識符說明證書的頒發(fā)和使用策略有關(guān)。

2.6 策略映射

? ? ? 表明兩個CA域之間的一個或多個策略對象標識符的等價關(guān)系,僅在CA證書里存在。

2.7 主體別名

? ? ? 指出證書所擁有者的別名,如電子郵件地址、IP地址等,別名是和DN綁定在一起的。

2.8 頒發(fā)者別名

? ? ? 指出證書頒發(fā)者的別名,如電子郵件地址、IP地址等,但頒發(fā)者的DN必須出現(xiàn)在證書的頒發(fā)者字段。

2.9 主體目錄屬性
? ? ? 指出證書擁有者的一系列屬性。可以使用這一項來傳遞訪問控制信息。

總結(jié)

以上是生活随笔為你收集整理的数字证书——密码学笔记(六)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。