基础知识
1. 公钥密码体制
公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:
- 加密:通过加密算法和公钥对明文进行加密,得到密文。
- 解密:通过解密算法和私钥对密文进行解密,得到明文。
- 注:由公钥加密的内容,只能由私钥进行解密;由私钥加密的内容,只能由公钥进行解密。
公钥密码体制的公钥和算法都是公开的,私钥是保密的。
2. RSA
RSA算法一直是最广为使用的"非对称加密算法"(加密使用的密钥和解密使用的密钥是不相同的)
这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。
RSA密码体制是一种公钥密码体制。
3. 签名
是在信息的后面再加上一段内容,可以证明信息没有被修改过。
一般是对信息做一个hash计算得到一个hash值。
注:这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。
在发送信息时,会把得到的hash值加密后做为一个签名和信息一起发出去。 接收方在收到签名和信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里的hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。
HTTPS通信过程
注:以下内容将使用:{} 表示加密后的内容,[ | ]表示密钥和算法进行加密
-
client 发送请求。
client -> server : hi,你是服务器吗? -
server 发送自己的数字证书,证书中有服务器的公钥。(server持有私钥)
server -> server : hi,我是服务器,这是我的数字证书。 -
client 检验数字证书,证书正确发送随机的字符串
client -> server : 请证明你是服务器!这是一个随机字符串。 -
server 先对随机字符串hash处理,再加密
注:防止黑客模拟用户发送特殊字符串,从而破解
server -> server : {hash处理的随机字符串}[私钥|RSA] -
client 验证hash处理的随机字符串,发送一个对称加密算法和密钥,并用公钥加密
client -> server : {对称加密算法和密钥}[公钥|RSA] -
之后 client与server之间用 client发送的对称加密算法加密,进行信息传输(增加序号;增加信息摘要:对信息进行hash计算;每次通讯都需要增加)
注:- (增加序号):防止黑客捣乱(多次重发已发过的信息)
- (增加信息摘要):防止黑客修改密文
server -> client : {序号0,已收到你发的对称加密算法和密钥,你想干啥?摘要}[密钥|对称加密算法]
client -> server : {序号1,haha,摘要}[密钥|对称加密算法]
server -> client : {序号2,hehe,摘要}[密钥|对称加密算法]
…
证书的构成和原理
-
Issuer (证书的发布机构)
指明这个证书是什么机构发布的(只是创建证书,不是指证书的使用者)。 -
Valid from , Valid to (证书的有效期)
证书的使用期限。 过了有效期限,证书就会作废,不能使用。 -
Subject (主题)
证书的所有者 -
Public key (公钥)
-
Signature algorithm (签名所使用的算法)
指的这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。指纹的加密结果就是数字签名 -
Thumbprint, Thumbprint algorithm (指纹以及指纹算法)
用来保证证书的完整性的,也就是说确保证书没有被修改过。
原理:在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上,就说明证书没有被修改过,因为证书的内容被修改后,根据证书的内容计算的出的hash值(指纹)是会变化的。
注:指纹以及指纹算法 会使用证书机构的私钥用签名算法加密 -
yyy所有者的证书如下:
×××××××××××××××证书内容开始×××××××××××××××××Issuer : xxx
Subject : yyy
Valid from : 某个日期
Valid to: 某个日期
Public Key : 一串很长的数字
Signature algorithm : zzz
…… 其它的一些证书内容……{证书的指纹和计算指纹所使用的指纹算法}[xxx的私钥|zzz]
×××××××××××××××证书内容结束×××××××××××××××××
详细数字证书原理