密码学
非对称加密
非对称加密有公钥(Public key)和私钥(Private key),public key加密,需要用private key解密。private key加密需要用public key解密。
用于传递信息
信息接收方自己保存私钥,把公钥公布出去,信息发送方可以用公钥加密信息后发送给接收方,接收方使用自己的私钥进行解密从而查看,可以防止信息被窃听
用于验证身份
被验证方,使用私钥加密个人信息,验证方使用可靠的公钥进行解密,如果能正确解密则可证明被验证方的身份。可以防止假冒
数字签名
数字签名可以用于验证接受到信息的真伪,用于防篡改和假冒。 数字签名的制作过程:
- hash函数对明文进行hash处理,得到hash串
- 使用私钥对hash串进行加密,得到的结果就是数字签名
值得一提的是数字签名的前提也是需要安全的得到公钥
数字证书
使用数字证书可以解决安全的分配公钥的问题
数字证书的制作过程:
- 寻找一个权威的第三方机构
- 该机构使用自己的私钥对被验证者的个人信息和公钥进行加密得到的结果就是数字证书
验证数字证书的过程:
- 根据数字证书获知对应的权威结构
- 拿到权威机构的公钥
- 使用公钥对数字证书进行解密(能够解密说明是权威的结构进行颁发,从而确认被验证者的身份,并且得到其公钥)
数字证书的前提是第三方机构必须权威,且数字证书主要解决的是公钥分配的问题。
https的通信过程
前提: 一个具备https协议的服务器需要想权威的第三方机构申请数字证书
- 客户端想服务端发请求获取数字证书
- 根据数字证书中的权威机构信息,去该权威机构获取其对应的公钥
- 使用公钥解开该数字证书(如果可以解开,并且解开后信息与服务端的信息一致,则可表明身份),同时获得服务端公钥
- 使用服务端公钥加密自己的会话秘钥发送给服务端
- 服务端接受到加密的会话秘钥并使用自己的私钥进行解密得到会话秘钥
- 之后就是http协议的通信了,不过每次的信息会使用会话秘钥进行加密。
