数字签名和数字证书

本文介绍了RSA加密和数字签名的基本原理,以及数字证书的由来。

密钥加密

  • A有一对成对的钥匙,一把为公钥,一把为私钥
  • 公钥可以发送给别人,私钥只能自己保存
  • 公钥私钥加密原理基于大质数分解
  • 加密流程
    • A将自己的公钥发送给B
    • 这时,B要发送信息给A,B利用A的公钥加密要发送的内容然后发给A
    • A收到加密信息后利用自己的私钥解密
    • 只要A的私钥不泄露,信息就是安全的,即使落在别人手里,也无法解密。

数字签名

步骤1:生成摘要(MD5)

  • A对信息使用hash函数(常用的MD5等)生成一个摘要(Digest)

步骤2:非对称加密(RSA1/2)

  • A对这个摘要用私钥加密,生成数字签名(signature)
  • A将数字签名附在要发送的信息后发送给B
  • B对数字签名用公钥解密,得到信息的摘要
  • B对信息本身使用hash函数,将得到的结果和上一步的摘要进行比对,如果两者一致,则说明信息未被改动
  • 如果这时,C用自己的公钥替换了A的公钥,那么C就可以冒充A,让B用C的公钥解密C发送的信息
  • 因此,这里需要一个具有公信力的机构(证书中心 certificate authority,简称CA)为公钥进行认证,这时就引出数字证书

RSA加密算法区别

开放平台签名算法名称 标准签名算法名称 备注
RSA2 SHA256WithRSA 强制要求RSA密钥的长度至少为2048
RSA SHA1WithRSA 对RSA密钥的长度不限制,推荐使用2048位以上

数字证书

  • 证书中心用自己的私钥,对A的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)
  • 简而言之,数字证书就是对公钥进行加密的
  • A今后发送加密信息时,除了附上数字签名外,再附上一个数字证书就可以保证自己的公钥不被冒充替换
  • 实例:https协议
    • 请求: 客户端向服务端发送加密请求
    • 响应:服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。
    • 客户端(浏览器)的”证书管理器”,有”受信任的根证书颁发机构”列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

img

如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

img

如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

img

如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。


参考