【博否安全】从加密算法到CA认证——数字认证技术学习笔记(一)

缩略词表

缩略词释义
CA证书颁发机构,Certificate Authority
CSR证书请求文件,Certificate Signing Request
LDAP轻量级目录访问协议,Lightweight Directory Access Protocol
PKI公钥基础设施,Public Key Infrustructure
RA数字证书注册审批机构,Registration Authority

数据加密技术

所谓数据加密(Data Encryption)技术是指将一个信息(或称明文,plain text)经过加密钥匙(Encryption key)及加密函数转换,变成无意义的密文(cipher text),而接收方则将此密文经过解密函数、解密钥匙(Decryption key)还原成明文。加密技术是网络安全技术的基石。
数据加密技术分类:对称加密、非对称加密。

非对称加密和数字签名

非对称加密算法主要包括:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
非对称加密中,公钥和私钥是成对的,它们互相解密。当目的是加密时:用公钥加密,用私钥解密;当目的是数字签名时:用私钥加密(签名),用公钥解密(验证)。
具体地,

1、非对称加密(公钥加密)

公开密钥(简称公钥“publickey”),私有密钥(简称私钥“privatekey”)
非对称加密算法实现机密信息交换的基本过程是:
(1)甲方生成一对密钥并将公钥公开
(2)需要向甲方发送信息的其他角色(如乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方
(3)甲方再用自己私钥对加密后的信息进行解密
甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
如果别人偷到了用公钥加密过的文件,别人也解不开这个文件因此无法得到被加密的信息,因为别人不知道私钥。

2、数字签名与数字验签(私钥加密)

除了利用公钥加密,甲方可以使用自己的私钥对机密信息进行签名(即使用私钥对数据进行加密)后再发送给乙方;乙方再用甲方的公钥对甲方发送回来的数据进行验签。
数字认证使用的场景是:甲方向乙方传递了一段消息“I want money”,但是乙方担心有人冒充甲方来行骗,这时怎么办呢?解决方法是,甲方可以使用自己的私钥对明文“I want money”进行加密(签名过程),假设加密后密文为“yenom tnaw I”,将其传输给乙方。乙方可以用甲方开放的公钥对密文进行解密(验签过程),如果验签后重新得到明文,那么就能确认信息确实是甲方发送的。因为只有甲方的公钥能解密甲方私钥加密的信息,这个过程就叫做数字签名。
数字证书原理详解
证书,也叫做数字证书,是网络世界中的“身份证”。数字证书是一个经证书授权中心数字签名的包括公开密钥拥有者信息和公开密钥的文件。证书由权威的、公正的、可信任的第三方机构颁发,我们一般把证书的颁发机构称为CA(Certificate Authority)。

证书的作用

主要是在非对称加密中,客户端需要获取服务端的公钥信息,但是如果请求被第三方拦截的话,公钥信息就可能被替换,会导致客户端用第三方的公钥进行加密,交互信息存在泄露的风险(谁也不想自己的银行卡密码被泄露)。因此,引入证书,用于鉴别服务端的身份。如果服务端的身份鉴定失败,那么就终止请求。
数字证书是由第三方公认机构颁发的,因为颁发机构是世界公认,而且这些第三方的公认机构的根证书,往往都是在浏览器、JDK等中就有的。服务端给公认机构提交自己的申请者的信息,网站的域名,以及自己的公钥等信息,公认机构用Hash算计对这些信息计算得到摘要信息,在对摘要信息和所有信息用公认机构的私钥加密得到的就是数字证书。
数字证书的作用:数字证书就是为了证明服务端的公钥没有被篡改。证书将持有者的身份信息和公钥关联到一起,保证公钥确实是这个证书持有者的,通过证书就可以确认持有者的身份。

数字证书的格式

证书的格式遵循 ITUT X.509 国际标准,X.509 为证书及其 CRL 格式提供了一个标准,但 X.509 本身不是 Internet 标准,而是国际电联 ITU 标准,它定义了一个开放的框架并在一定的范围内可以进行扩展。
X.509v3规定的数字证书格式
复杂来说,X.509是由国际电信联盟(ITU-T)制定的数字证书标准。为了提供公用网络用户目录信息服务,ITU于1988年制定了X.500系列标准。其中X.500和X.509是安全认证系统的核心,X.500定义了一种区别命名规则,以命名树来确保用户名称的唯一性;X.509则为X.500用户名称提供了通信实体鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口,X.509称之为证书。
简单来说,X.509是一套数字证书的体系标准,它标准化了一个通用的、灵活的证书格式。X.509是X.500标准系列的一部分,在PKI的发展中,X.509起到了无可比拟的作用,其丰富的证书携带信息使之成为当前最流行的证书存储格式。
X.509 v3规范的证书格式中包含的关键信息如下:

1、证书版本号(Version)

版本号号指明X.509证书的格式版本号,如今的值能够为0、1、2,也为将来的版本号进行了提前定义。

2、证书序列号(Serial Number)

序列号指定由CA分配给证书的唯一的数字型标识符。当证书被取消时,实际上是将此证书的序列号放入由CA签发的CRL中,这也是序列号存在的唯一原因。

3、签名算法

生成该证书的签名时所使用的HASH密码学算法和公钥密码学算法。例如,SHA-1 和 RSA 的对象标识符就用来说明该数字签名是利用 RSA 对SHA-1 杂凑加密.

4、 颁发者(Issuer)

此域用来标识签发证书的CA的X.500 DN名字(验证者通过该字段去获取CA的证书)。包含国家、省市、地区、组织机构、单位部门和通用名。

5、有效期(Validity)

指定证书的有效期。包含证书開始生效的日期和时间以及失效的日期和时间。每次使用证书时。须要检查证书是否在有效期内。

6、主题:该证书时颁发给谁的,即证书持有者的名称。

指定证书持有者的X.500唯一名字。包括国家、省市、地区、组织机构、单位部门和通用名,还可包括email地址等个人信息等

7、证书持有者公开密钥信息:证书持有者的公钥信息。

证书持有者公开密钥信息域包括两个重要信息:证书持有者的公开密钥的值;公开密钥使用的算法标识符。此标识符包括公开密钥算法和hash算法。
8、签名:CA对该证书的签名,又叫做CA的指纹信息。

CA签名过程

CA签名过程
首先,CA使用签名算法中的HASH密码学算法(如SHA1)生成证书的摘要信息,然后使用签名算法中的公钥密码学算法(如RSA),配合CA自己的私钥对摘要信息进行加密,最终形成签名。
证书验证原理
证书颁发给使用者后,使用者就会拿着证书到处证明自己的身份。如果我们收到了一个这样的证书,怎么才能判断这个证书就是合法的,不是伪造的呢?证书中存储的有签名信息,假设交互的双方是A和B。A收到了B发过来的证书,想要验证这个证书的真伪,通过如下步骤:

  1. A首先需要获取到为B颁发证书的那个CA的公钥,用这个公钥解密证书中的签名,得到摘要信息1
  2. A使用证书中签名算法里面的HASH算法对证书进行HASH计算,得到一个摘要信息2。
  3. A将摘要信息1和摘要信息2进行对比,如果两者一致,就说明证书确实是由这个CA颁发的(能用CA的公钥解密说明该CA确实持有私钥),并且没有被篡改过,该证书没有问题。

当然,也会同时检查证书是否在有效期内。
上述步骤1中,A使用CA的证书验证B的证书的过程如下图所示。
在这里插入图片描述

通信双方相互验证

如果通信双方要互相验证对方的证书,那就要分别获取到为对方颁发证书的CA的证书。如下图所示,A如果要验证B的证书,则A必须先获取为B颁发证书的CA的证书,用CA的证书验证B的证书;B如果要验证A的证书,则B必须先获取为A颁发证书的CA的证书,用CA的证书验证A的证书。如果A和B是由同一个CA颁发的证书,那么两者获取到的CA的证书是相同的,如果A和B是由两个不同的CA颁发的证书,那么两者获取到的CA的证书是不同的。
在这里插入图片描述
上述过程存在两个问题:

  1. CA的公钥如何获取
    B的证书中含有为B颁发证书的CA的信息,A通过该信息请求CA的证书,CA的证书中含有CA的公钥。
  2. 如何验证CA的证书是否被篡改及身份
    验证CA证书是否被篡改及CA的身份和A验证B的证书和身份的原理一样,首先通过摘要信息进行判断,然后找为CA颁发证书的上层CA,通过这种一层一层的方式验证身份。那么,什么时候这个验证过程才会停止呢?直到找到一个可信的CA或者验证出现了错误。操作系统中一般都会安装一些根证书,在进行身份验证的时候,如果在操作系统的根证书中验证了CA的身份,那么验证过程就可以终止了。
    PS:12306网站之前是自己给自己颁发证书,众多浏览器都会提醒用户该网站不安全。

证书的生成格式

根据密钥生成方式的不同,为网络中设备(电脑、网站、防火墙)生成证书有两种方式:

  1. 先在设备上生成公私秘钥对,然后将公钥信息及设备信息提供给CA,CA根据这些信息生成证书
  2. CA直接为设备生成公私秘钥对,然后为设备生成证书,最后将生成的公私秘钥对及证书导入设备中
    常见的证书存储格式如下表所示:
DER二进制编码,后缀名.der/.cer/.crt证书不包含私钥
PEMBASE 64编码,后缀名.pem/.cer/.crt证书不包含私钥
PKCS #12PKCS编码,后缀名.p12证书包含私钥

注意:公私密钥对必须成对出现才能保证公钥密钥学正常运转,所以如果CA同时为设备生成了公私密钥对和证书,就需要将公私密钥对(主要是其中的私钥)和证书同时颁发给设备,颁发时需要根据不同情况选择证书的存储格式。例如,颁发给PC时就要选择PKCS #12格式,将私钥和证书同时颁发;颁发给防火墙时,因为防火墙只支持DER/PEM格式,所以要选择DER/PEM,同时还必须将公私密钥对以单独文件的形式颁发给防火墙。
证书的存放
数字证书作为一种电子数据格式,能够直接从网上下载。也能够通过其它方式。
使用IC卡存放用户证书。即把用户的数字证书写到IC卡中。供用户随身携带。这样用户在全部可以读IC卡证书的电子商务终端上都可以享受安全电子商务服务。
用户证书直接存放在磁盘或自己的终端上。户将从CA申请来的证书下载或拷贝到磁盘或自己的PC机或智能终端上。当用户使用自己的终端享受电子商务服务时,直接从终端读入就可以。
另外,CRL一般通过网上下载的方式存储在用户端。

小结

总结一下证书的使用方法:

  1. 通信双方各自持有自己的证书,当一方需要向另一方证明身份时,就把自己的证书发送过去。双方不用事先保存对方的证书,只在验证时接收对方发送过来的证书即可。
  2. 一方验证另一方证书的真伪时,必须事先获取到为另一方颁发证书的CA的证书,用这个CA证书来验证对方的证书。

注意:因为不同的CA会颁发不同证书,所以在证书的世界中,每个人可能会持有多个证书。同理,每个人也会获取到多个不同的CA证书。在这种情况下,一方收到另一方发过来的证书时,会根据证书中颁发者的名称,在自己的系统中查找对应的CA证书,找到后就用这个CA证书来验证。如果没有找到,那就说明事先没有获取到CA证书,也就无法判断对方发送过来的证书的真伪。
通过openssl或者cryptopp加密库均可以签名,生成证书。

参考资料

  1. 清远qingyuan,https://blog.csdn.net/u014023993/article/details/86735957
  2. 简一商业,【IoT】加密与安全:PKI 安全体系浅析,https://blog.csdn.net/liwei16611/article/details/85230138
  3. DeathGodNow,https://blog.csdn.net/qq_37543808/article/details/88947519
  4. pengshengli,数字信封原理,https://blog.csdn.net/pengshengli/article/details/83386906
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值