数字证书基础-X.509协议

数字证书的两个基本概念

1. 公钥加密,私钥解密;私钥签名,公钥验签。

2. 根证书应该被无条件信任,根证书通过可靠途径获得。

1. 证书状态查询

提供证书回收状态查询的两种机制:

1.OCSP --online certficate status protocol (rfc2560)Firefox3 缺省就是使用OCSP协议。

2.CRLs --certificate revocation lists

2. X.509中的实体

end entity

CA:certification authority

RA:registeration authority, CA申请证书之间,需要先向RA注册。

CRL Issuer:代替CA发布CRLs

repository:存储证书和CRL

3. PEM

PEM: InternetPrivacy Enhanced Mail (PEM)

PEM中的架构:

第一层:IPRA,level-1,为PCAs颁发证书

第二层:PCAslevel-2,为CA颁发证书。不同的PCAs面向不同类型的用户。

第三层:CA.level-3,也可处于更低的级别。

X.509 V3允许certification path不起源于IPRA,可以起源于user'sdomain,因为有些时候,localdomain是最可信的。

4. 证书类型

证书分为CA证书和end-entity 证书,可以通过Basic Constraints[x.509 4.2.1.9]中的subject type区分。其中CA证书分为如下三类:

cross-certificate:             issuer subject不一样。

self-issued certificates:自颁发证书。issuer subject一样,to support changes in policy or operations

self-signed certificates:自签证书,即根证书。是一种特殊的self-issued certificates使用自己的密匙对证书签名。根证书是一种特殊证书,必须受到客户无条件的信任

证书是自颁发证书而不是自签证书的情形:

CA在一定情形下需要进行密匙更换,比如private key泄露。CA在进行密钥更替时,存在两个密钥对(新密钥对和旧密钥对),为了平滑过渡,需要另外生成3个证书。

证书1: 新密匙对的self-signed 证书,新的根证书。

证书2:self-issued证书,携带oldpublic key,使用new private key签名。目的:使得旧密匙对还能使用,即旧密匙对颁发的证书还能继续使用。并且,验证这类证书需要用到新密匙对,确保了安全性。

证书3:self-issued证书,携带newpublic key,使用old private key签名。存在的必要性??

6. protocol

Operational protocols:分发证书和CRLs有很多手段。分发证书和CRLs有很多手段,包括但不限于LDAP,HTTP,FTP,X.500

Management protocols:支持在线交互。包括如下功能:

1.注册。CARA可以接受注册。

2.初始化。install key materials

3.颁发证书

4.key pair recovery

5.key pair updateAll key pairs need to be updatedregularly.

6.revocation request

7.cross-certification

注意:除了on-line protocol能够支持这些功能,还有其它手段,比如hardware token.

7. 证书格式

 

# openssl x509 -in gino2.cer -text -noout 
Version: 3 (0x2) 
Serial Number: be:86:77:9c:48:b1:d7:86:ca:38:87:ef:d4:87:dd:00   --CA内唯一
Signature Algorithm: sha1WithRSAEncryption --必须与signatureAlgorithm一致
Issuer: O=Ericsson, CN=Ericsson NL Individual CA v2 --证书的颁发者
Validity 
    Not Before: Dec 5 08:21:55 2014 GMT 
    Not After : Dec 5 08:21:54 2017 GMT 
Subject:
O=Ericsson, CN=Gino Liao/[email protected]/serialNumber=elioxii --证书的拥有者
Subject Public Key Info: 
    Public Key Algorithm: rsaEncryption --支持RSA,DSA,DH。DSA仅适用于数字签名。DH仅适用于秘钥交换。
    RSA Public Key: (2048 bit) 
    Modulus (2048 bit): --RSA算法中的n, n=pq。这里表示是一个占用256个字节的整数。
        00:90:17:20:6b:23:19:40:48:ce:d8:9a:b9:ce:7d: 
        23:93:b9:17:2b:ab:be:08:d2:fc:02:c9:7f:e9:58: 
        cd:4c:c7:19:90:21:27:f8:cb:46:73:e4:e3:e9:1e: 
        3f:27:a2:8c:4b:51:77:27:6f:8f:b7:05:77:a4:fd: 
        39:c5:c8:ca:5f:fe:47:1c:b3:f1:2e:bd:cb:87:89: 
        f4:01:a9:fa:34:31:2b:2b:c8:3f:39:4d:a5:36:db: 
        dd:7a:a2:18:d8:1e:2a:f5:11:a1:ec:1c:5b:27:7c: 
        a1:73:33:9c:3a:40:17:a8:d1:6e:91:3d:9b:8e:8c: 
        64:7d:ff:87:4e:2c:f2:c7:a9:6b:c9:c3:8c:cb:10: 
        c3:a8:18:7f:36:4e:fb:17:d6:8c:c5:43:20:7d:3b: 
        d3:c7:57:ad:5e:c3:22:03:21:92:c6:47:38:ed:bc: 
        09:12:0c:c7:e3:fd:c8:fd:83:5a:ab:d7:d0:bb:19: 
        e1:4c:94:e1:cb:e5:91:b5:18:59:3e:46:18:a9:32: 
        21:c6:92:9a:33:7d:dd:29:c6:6c:bc:a4:4b:21:41: 
        db:9d:f2:e8:29:07:32:23:ec:23:94:ab:e0:0c:95: 
        fb:e0:d3:f8:2c:e9:a0:c4:7e:13:61:ef:03:64:58: 
        b1:a4:65:87:d2:13:74:5a:af:6a:8d:6c:46:58:43: 
        88:a9
    Exponent: 65537 (0x10001) --RSA算法中的e
X509v3 extensions: 
    X509v3 CRL Distribution Points:   --如何得到CRL信息
        URI:http://crl.trust.telia.com/ericssonnlindividualcav2.crl 

    Authority Information Access:   --重要,后面描述
        OCSP - URI:http://ocsp2.trust.telia.com 
        CA Issuers - URI:http://ca.trust.teliasonera.com/ericssonnlindividualcav2.cer 

    X509v3 Subject Alternative Name: 
        email:[email protected] 

    X509v3 Certificate Policies: 
        Policy: 1.3.6.1.4.1.271.2.3.1.1.18 
        CPS: https://repository.trust.teliasonera.com/CPS 

    X509v3 Extended Key Usage: --表明了证书的用途。证书只能用于这里制定的用途。 
        E-mail Protection, TLS Web Client Authentication 

    X509v3 Subject Key Identifier: --SKID,用来区分一个CA的多对公钥密钥 
        39:5B:62:EC:81:56:E4:26:55:0F:FC:A4:7B:43:0A:2C:88:AB:B4:38 

    X509v3 Authority Key Identifier: --AKID,用来区分一个CA的多对公钥密钥
        keyid:B1:0D:CA:D4:46:B7:AF:86:02:C3:2F:6F:06:CA:0E:76:71:7F:4B:37 

    X509v3 Key Usage: critical 
        Digital Signature, Key Encipherment 

Signature Algorithm: sha1WithRSAEncryption --签名算法和签名。这里表示用sha1算法和上级CA的密匙对本证书中的tbsCertificate进行签名.验签的过程:用sha1算法对tbsCertifcate计算摘要值,用上级CA的public key对本字段解密,然后比较。
        08:3b:25:31:72:ef:3f:e7:51:9d:f2:10:2f:c4:28:72:ec:29: 
        49:56:c2:c5:cf:8b:f6:f3:a0:b5:dc:fa:3a:92:9b:4b:0c:5a: 
        a4:5f:6b:66:b4:6f:ff:86:ac:18:8f:aa:38:9b:94:51:cd:71: 
        51:3d:cc:64:c6:8f:e0:e1:69:1f:ca:d5:95:75:dc:48:ad:88: 
        ec:08:cf:22:f0:f8:0e:76:05:39:b3:b2:3d:3e:31:57:dd:ef: 
        e7:1c:9a:ae:26:75:22:4a:00:f6:7d:2e:67:52:6d:83:61:b1: 
        fe:8b:db:ca:6c:19:2d:80:7f:d1:a8:b8:79:db:5d:4e:3f:25: 
        9e:70:bc:ec:a0:9e:2e:8a:d0:35:7e:3e:c7:73:57:4c:be:40: 
        e3:0f:74:6c:6b:57:08:3d:cc:f9:d5:a5:0d:d1:0b:20:ab:f8: 
        1d:13:d3:59:b3:80:1c:2f:5f:e2:db:05:c9:7f:8b:3d:d4:4b: 

8. 证书链

8.1 证书链的概念

证书链路{1,...,n-1,n}

1) 12issuer23issure...n-1nissuer

2) 1是可信任的证书

3) 待验证的证书是n

4) 所有证书都在有效期内

在证书链中,一个证书不可以出现两次。

8.2 如何获取证书的颁发者

方法1name chaining

借助证书中的issuer/subject两个字段。缺点:一个CA只能有一对公钥密钥对。

 

方法2key identifer chaining

AKID(Authority Key Identifier): 一个CA有多个key pair时,用这个id来区分key pair

SKID(Subject Key Identifier):  用来表示一个具体的public key

name chaining比较,其优点是支持一个CA可以有多个公钥密钥对

 

8.3 如何获得证书

方法一:CA制定一些规则

在协议中,以下属性指明了证书的路径。

The cACertificate attribute of a CA's directory entry:指明了一个路径。这个路径下了存储如下两种证书:1.self-issued证书,2.在同一个realm内的其它CA颁发给本CA的证书。realm的定义没有明确,这里可以理解为其它所有CA颁发给本CA的证书。

The issuedToThisCA elements of the crossCertificatePair attributeof a CA's directory entry:指明了一个路径。这个路径下可以存储所有颁发给本CA的证书,除了self-issued证书。

The  issuedByThisCA elements of the crossCertificatePair attributeof a CA's directory entry :指明一个路径。这个路径存储本CA颁发的这类证书:颁发的对象不是本CA的下属。

CA制定如下规则后,就可以获取所有证书路径:

1 所有self-issued证书都存储在cACertificate 

2. 颁发给本CA的证书都存储在issuedToThisCA,除了self-issued证书

3. CA给其它非下属CA颁发的证书存储在issuedByThisCA 

方法二:windows2000利用private extention中的AIA

Authority Information Access (AIA) 可以用来指明路径。

例如:

Authority Information Access: 
       OCSP - URI:http://ocsp.trust.teliasonera.com 
       CA Issuers -URI:http://repository.trust.teliasonera.com/teliasonerarootcav1.cer

方法三:pkiPath

pkiPath:这个路径直接说明了从某个CA到另外的CA的路径。

8.4 构建证书链

构建证书链的两个方向:

正向:从实体证书到可信赖证书,适用于hierarchical模型


hierarchical模型

逆向:从可信赖证书到实体证书,适用于分布式模型

 

分布式模型

构建证书链路正向的例子

从待验证的证书开始,向前递归,直到一个已知的可信赖的CA为止。这种方法只使用于应该意义上的层次证书结构。

比如:User2收到User1的证书,需要验证。User2会找到User1的证书是CA1颁发的,获取CA1的证书,然后查看CA1的证书是CA0颁发的,并且CA0是可信赖的CA。所以最终构建一个完整的证书链:User1--CA1--CA0


构建证书链路逆向的例子

适用于层次结构和分布式结构混合的场景。如下图所示,User3可信赖的CACA7如果User3收到User2的证书,需要验证其有效性。我们需要在User2CA7之间创建证书链路。左边部分是严格的层次结构,可以使用向前递归的部分,建立链路User2--CA4--CA2--CA0。接下来,剩余工作是建立CA0CA7的链路,右边部分是分布式结构,适用于反向方法建立链路,需要借助证书的issuedByThisCA 参数,从而建立CA0--CA5--CA7。所以最终建立的证书链路是User2--CA4--CA2--CA0----CA5--CA7--User3

注意:反向建立证书链路的效率低,因为需要排除很多分支。

 

总结:在严格的层次结构中,适用于正向建立链路。在分布式结构中,适用反向建立证书链路,如果使用正向的方法,效率低。

9. 证书存储格式

Ø  DER-encoded binary X.509
The Distinguished Encoding Rules (DER) format supports storage of a single certificate.This format does not support storage of the private key or certification path.

Ø  Base64-encoded X.509
The Base64 format supports storage of a single certificate. This format doesnot support storage of the private key or certification path.

ePDG使用这种证书。

Ø  Personal Information Exchange (PKCS #12)
The Personal Information Exchange format (PFX, also called PKCS #12) supportssecure storage of certificates, private keys, and all certificates in acertification path.

The PKCS #12 format is the only file format that can be used to export acertificate and its private key.

Ø  Cryptographic Message Syntax Standard (PKCS #7)
The PKCS #7 format supports storage of certificates and all certificates in thecertification path.

文件名后缀

格式

.pem

base64

.cer

.crt

.der

通常是DER格式,也可能是base64

.p7b

.p7c

PKCS#7

.pfx

Predecessor of PKCS#12

.p12

PKCS #12


10. 证书应用于ePDG

10.1拓扑图

网络拓扑图

UE通过证书认证WMG,WMG通过AAA来验证UE,所以WMG不需要UE的证书。UE必须无条件信任WMG的根证书,所以UE是通过第三方可靠途径获取WMG的根证书的。这就是WMG在给UE下发的证书链中,包括了所有证书,除了WMG的根证书的原因。

WMG使用SCEP协议注册证书和下载证书。SCEP的全称是Simplecertificate enrollment protocol。SCEP支持如下的功能:

1 下载证书和CRL。

2 证书的注册和查询。

10.2注册证书

1)  ePDG向CA发送GetCaCert请求, CA会把整个证书链(除了ePDG的证书,因为还没有生成)发给ePDG。收到证书链后,ePDG需要验证证书链。

•如何验证根证书:只验证签名。

•以明文传输CA证书。

2)  ePDG向CA发送PKCSReq,向CA申请为ePDG注册一个证书,PKCSReq包含了很多参数(参见PKI模块的配置)。

•证书的格式是PKCS7,因为PKCS7可以存储private key。ePDG需要转换成base64。

•证书传输使用ePDG上级CA的私钥加密。因为需要传输private key,所以传输需要加密。

10.3 证书的使用

证书导致UDP过大

在现场出现这样的问题:上图的第7条消息由于携带了证书,UDP包的大小轻松超过MTU,导致分片。但是在现场,很多AP的版本比较老,不支持UDP分片,导致第7条消息被AP丢弃,IKE无法建立会话。

两种解决方案:

1)  如果第4条消息携带了Notify(HTTP_CERT_LOOKUP_SUPPORTED),意味着UE支持通过HTTP协议获取证书。ePDG可在第7条消息中用URL代替证书来保证IKE消息的长度小于AP的MTU。ePDG内置了一个HTTP服务器来支持UE通过HTTP获取证书。

2) 使用ECC签名算法。在同等安全的需求小,ECC的key的长度原因小于RSA和DSA算法。

11. 算法比较

图在同中安全等级下,各个算法所需要的key的长度的比较

图 RSA算法和ECC算法效率的比较。RSA加密慢,解密快;ECC加密快,解密慢。

猜你喜欢

转载自blog.csdn.net/liaoxiangui/article/details/80604125