下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

X.509是什么?

作者:课课家教育     来源: http://www.kokojia.com点击数:5104发布时间: 2017-03-18 10:03:55

标签: X.509PKI密钥私钥RSA算法DH算法

软考,您想通过吗?一次通过才是硬道理

  PKI(Public Key Infrastructure,公共基础设施)是遵循标准的公钥基础设施,国内外有很多标准化组织为PKI的实施和应用制定了一系列的有关标准。PKI主要包括四个部分:X.509证书格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2);CA操作协议;CA政策管理协议;CA政策制定。

  一、X.509标准

  X.509是国际电信联盟-电信(ITU-T)部分标准和国际标准化组织(ISO)的证书格式标准,X.509是定义了公钥证书结构的基本标准。1988年首次发布,1993年和1996年两次修订。当前使用的版本是X.509 V3,它加入了拓展字段的支持,这极大地增进了证书的灵活性。X.509 V3证书包括一组按预定义顺序结构排列的强字段,还有可选扩展字段,即使在强制字段中,X.509证书也允许很大的灵活性,因为它为大多数字段提供了多种编码方案。

  X.509标准在PKI中起到举足轻重的作用,PKI由小变大,由原来网络封闭环境分布正是开放环境,X.509起到很大作用,可以说X.509标准是PKI的雏形。PKI是在X.509标准基础上发展起来的,研究、学习PKI的人,首先学习X.509标准。

X.509是什么?_X.509_PKI_密钥_私钥_RSA算法_DH算法_课课家教育

  二、常见X.509证书格式

      1、证书格式

  cer/crt是用于存放证书,它是2进制形式存放的,不含私钥。

  pem跟crt/cer的区别是它以Ascii来表示,可以用于存放证书或私钥。

  pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式。

  p10是证书请求。

  p7r是CA对证书请求的回复,只用于导入

  p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

  2、证书文件/私钥文件

  在HTTPS通讯中最常用的是cer/crt和pem。下面以pem格式的证书为例进行说明。下面是一个完整的PEM格式证书:

  Certificate:

  Data:

  Version: 1 (0x0)

  Serial Number: 1 (0x1)

  Signature Algorithm: md5WithRSAEncryption

  Issuer: C=US, ST=Montana, L=Bozeman, O=sawtooth, OU=consulting, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com

  Validity

  Not Before: Jun 30 18:52:17 2010 GMT

  Not After : Mar 26 18:52:17 2013 GMT

  Subject: C=US, ST=Montana, L=Bozeman, O=yaSSL, OU=support, CN=www.yassl.com/emailAddress=info@yassl.com

  Subject Public Key Info:

  Public Key Algorithm: rsaEncryption

  RSA Public Key: (512 bit)

  Modulus (512 bit): 00:c6:7b:c0:68:81:2f:de:82:3f:f9:ac:c3:86:4a:66:b7:ec:d4:f1:f6:64:21:ff:f5:a2:34:42:d0:38:9f:c6:dd:3b:6e:26:65:6a:54:96:dd:d2:7b:eb:36:a2:ae:7e:2a:9e:7e:56:a5:b6:87:9f:15:c7:18:66:7e:16:77:e2:a7

  Exponent: 65537 (0x10001)

  Signature Algorithm: md5WithRSAEncryption 58:a9:98:e7:16:52:4c:40:e7:e1:47:92:19:1b:3a:8f:97:6c:7b:b7:b0:cb:20:6d:ad:b5:d3:47:58:d8:e4:f2:3e:32:e9:ef:87:77:e5:54:36:f4:8d:50:8d:07:b4:77:45:ea:9d:a4:33:36:9b:0b:e0:74:58:11:c5:01:7b:4d

  -----BEGIN CERTIFICATE-----

  MIICFDCCAb4CAQEwDQYJKoZIhvcNAQEEBQAwgZ4xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhzYXd0b290aDETMBEGA1UECxMKY29uc3VsdGluZzEkMCIGA1UEAxMbd3d3LnNhd3Rvb3RoLWNvbnN1bHRpbmcuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0xMDA2MzAxODUyMTdaFw0xMzAzMjYxODUyMTdaMIGKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHTW9udGFuYTEQMA4GA1UEBxMHQm96ZW1hbjEOMAwGA1UEChMFeWFTU0wxEDAOBgNVBAsTB3N1cHBvcnQxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMZ7wGiBL96CP/msw4ZKZrfs1PH2ZCH/9aI0QtA4n8bdO24mZWpUlt3Se+s2oq5+Kp5+VqW2h58VxxhmfhZ34qcCAwEAATANBgkqhkiG9w0BAQQFAANBAFipmOcWUkxA5+FHkhkbOo+XbHu3sMsgba2100dY2OTyPjLp74d35VQ29I1QjQe0d0XqnaQzNpsL4HRYEcUBe00=

  -----END CERTIFICATE-----

  从Certificate开始到“-----BEGIN CERTIFICATE-----”为止,中间的内容是证书的明文格式。

  从“-----BEGIN CERTIFICATE-----”开始到“-----END CERTIFICATE-----”为止是证书的明文格式经过ASN.1编码再经过Base64编码得到的。

  证书中包含的内容以及ASN.1编码格式:

 证书中包含的内容以及ASN.1编码格式:

  对于私钥文件,真正的私钥是包含在字符串"-----BEGIN PRIVATE KEY-----"和字符串"-----END PRIVATE KEY-----"之间。

  如果该私钥文件是pkcs8格式的,那么该私钥文件的格式为

  PrivateKeyInfo ::= SEQUENCE {

  version Version(INTEGER),

  privateKeyAlgorithm PrivateKeyAlgorithmIdentifier (AlgorithmIdentifier),

  privateKey PrivateKey(OCTET STRING),

  attributes [0] IMPLICIT Attributes OPTIONAL(SET OF Attribute)

  }

  如果不是pkcs8格式的,那么"-----BEGIN PRIVATE KEY-----"和"-----END PRIVATE KEY-----"之间的内容就是私钥的Base64编码。

  在客户端或服务器在交换证书时,需要首先把Base64编码转换为ASCII编码再进行传输。

  三、公钥/私钥

  公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密

  在SSL/TLS协议中需要是用公钥算法,来进行对称密钥的交换。最常见的算法是RSA和DH,而RSA算法和DH算法的公钥、私钥的数据格式是不同的。

  3.1RSA算法

  RSA算法简单描述:

  RSA的算法涉及三个参数,n、e1、e2。

  其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

  e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。

  (n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。

  RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)

  e1和e2可以互换使用,即:

  A=B^e1 mod n;B=A^e2 mod n;

  密钥格式:

  公钥包含两个整数:

  n RSA 合数模,是一个正整数

  e RSA 公开幂,是一个正整数

  私钥有两种表达方法,这两种方法是等价的。

  1、n RSA 合数模,是一个正整数

  d RSA 私有幂,是一个正整

  2、p 第一个因子,是一个正整数

  q 第二个因子,是一个正整数

  dP 第一个因子的CRT 幂,是一个正整数

  dQ 第二个因子的 CRT 幂,是一个正整数

  qInv (第一个)CRT 系数,是一个正整数

  对于RSA算法中的公钥部分,包含两个INTEGER类型的数字n和e。

  对于RSA私钥的第一种表述方法,私钥中包含5个INTEGER类型的数字依次为n, e, d, p, q;对于RSA私钥的第二种表达方法,私钥中包含8个INTEGER类型的数字依次为n, e, d, p, q, dP, dQ和qInv;

  交互方法:

  SSL/TLS协议中,服务器端用Certificate消息把证书(公钥)传递给客户端,客户端随机生成48byte的预主密钥,用公钥加密传递给服务器端,作为双方对称加密中一系列密钥计算的基础。如下图:

  3.2DH算法

  DH算法原理:

  DH算法的出现就是用来进行密钥传输的。DH算法是基于离散对数实现的,用于交换对称密钥,不能用于非对称密钥的加解密。

  DH算法简要描述如下:

  一个素数q和一个整数a, 称a是q的一个原根。

  双方各自选定一个大数Xa和Xb,分别计算得到Ya = a**Xa mod q和Yb= a**Xb mod q;

  双方交换Ya和Yb,保密Xa和Xb。

  计算对称密钥的方法:

  K = Ya**Xb mod q = Xb ** Ya mod q

  密钥格式:

  DH算法的公钥中包含了两个整数:a和q,用于生成对称密钥

  交互方法:

  服务器一端通过Certificate消息同步双方的a和q。

  服务器紧接着选取Xa,计算得到Ya,并通过Server Key Exchange消息把Ya传递给客户端

  客户端选取Xb,计算得到Yb,并通过Client Key Exchange消息把Yb传递给服务器端。

  双方分别计算K = Ya**Xb mod q = Xb ** Ya mod q,得到相同的预主密钥。

  如下图:

  X.509标准是PKI的雏形,PKI由局域广域的应用,由于X.509的制定,促进PKI的发展与完善。若想要全面了解PKI的内容,首先要掌握X.509标准的全部内容,这是学习PKI的基础。今天对X.509的介绍就到这,需要的朋友可登陆课课家教育搜索公众号【课课家IT精品课程】学习更多IT知识。

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程