1.对称加密
通信双方共同拥有一把密钥,AES、DES、RC4
2.非对称加密
通信双方持有不同的密钥,私钥、公钥,RSA
加密传输:公钥加密(生成密文),私钥解密(得到原文)
数字签名:私钥加密(生成签名),公钥解密(验证签名)
3.摘要
一段信息经过摘要算法得到一串哈希值,用于数据的完整性校验,MD5、SHA1、SHA256、SHA512
4.数字签名
摘要经过私钥的加密,保证信息摘要的正确性
5.有了信息摘要,为什么还要有数字签名?
信息摘要虽然不可逆,但容易被伪造。所以信息摘要只用于完整性校验,而要保证信息摘要的正确性,就要依靠数字签名。
6.为什么要加密摘要,而不直接加密信息?
非对称加密的速度慢,如果传输的数据量非常大,加解密的时间比网络传输的时间长。如果对传输的内容只有完整性要求,而没有安全性要求,可以对摘要进行加密。
7.数字证书
问题:必须要保证公钥可信。
数字证书就是一个crt文件,由权威证书认证机构(CA)颁发。(对公钥的认可)
问题:数字证书如何申请颁发?
在自己的服务器上生成一对公钥和私钥,然后将域名、申请者、公钥等信息整合在一起,生成csr文件。
将csr文件发给CA机构,CA机构收到申请后,会通过各种手段验证申请者的组织信息和个人信息。如无异常,CA使用散列算法对csr里的明文信息先做一个HASH,得到一个信息摘要,再用CA自己的私钥对这个信息摘要进行加密,生成签名(CA机构使用其根证书私钥签名)。签名+csr明文信息即是证书,CA把这个证书返回给申请人。
8.相关扩展名
crt:证书文件,可以是DER(二进制)编码,也可以是PEM(Base64)编码的,类UNIX系统中比较常见。
cer:证书文件,常见于Windows系统,编码类型同样可以是DER或者PEM。
csr:证书签名请求文件,生成请求后发送给CA,然后CA签名并发回证书。
key:公钥或私钥的扩展名,可以是DER编码或者PEM编码。
p12:证书文件,包含一个X509证书和一个被密码保护的私钥。
pem:ASCII+Base64编码格式的证书(PEM就是把DER内容进行了一次Base64编码)
der:二进制格式的证书。
9.生成CSR文件
Openssl、相关专用软件等。
10.保证信息安全(TLS/SSL)
做到三点才能保证信息的安全:信息的保密性、信息的完整性、身份识别。将这三点结合起来,就是TLS/SSL做的事情。
客户端(浏览器)向服务端发出请求,服务端返回证书给客户端。客户端拿到证书后,把证书里的签名和明文信息分别取出来,然后用自身携带的CA机构的公钥解密签名,得到信息摘要1,然后再对明文信息进行HASH,得到信息摘要2,对比信息摘要1和信息摘要2,如果一样,说明证书是合法的,也就是证书里的公钥是正确的。
以上采用的是非对称加密(CA的公钥和私钥),保证客户端接收到服务端正确的公钥,有了服务端的公钥后,之后的信息加密都可以使用这个公钥,用这个公钥加密后的密文,只有服务端的私钥能解。