什么是加密
加密是对明文数据
按某种特殊的算法进行加工处理,使其成为不可被直接读取的数据,即密文数据
,而密文数据
可以通过特定的秘钥
解密后还原出明文数据
;
为什么需要加密
网络中数据的传输如果是明文的话,在经过WiFi、交换机、路由器、网络服务运营商等物理节点时可能被监听和篡改,从而带来信息丢失是的风险或损失,所以需要对数据进行加密处理后再传输,以确保数据的安全性;
加密方式
加密方式主要分为对称加密和非对称加密;
对称加密
-
对称加密描述:
对称加密简单,速度快;
常用对称加密方法 AES;
对称加密秘钥
只有一把,它既可以对原数据进行加密生成加密内容,也可以对加密内容进行解密还原数据;
图片来源(https://sectigostore.com/blog/types-of-encryption-what-to-know-about-symmetric-vs-asymmetric-encryption/)
-
对称加密的安全性:
如果只有通信双方存储有秘钥
信息,那此时数据传输即为安全的;
如果秘钥
需要通过网络传输,则可能被第三者窃取秘钥
,从而出现传输信息被监听和篡改的风险;
非对称加密
-
非对称加密描述:
非对称加密复杂,速度慢;
常用对称加密方法 RSA;
非对称加密有两把秘钥
,一把称为公钥
(可公开传送),另一把称为私钥
(服务器秘密保存);用公钥加密
的数据必须用私钥
才能解开,用私钥加密
的数据只有公钥
能解开。
图片来源(https://sectigostore.com/blog/types-of-encryption-what-to-know-about-symmetric-vs-asymmetric-encryption/)
-
非对称加密的安全性:
对于服务器自身存储的私钥
一般能够保证其安全性,对于公钥
如果能安全传输到客户端,那此时双方数据传输即为安全的;
由于公钥
发放需要通过网络明文传输给客户端,此时则可能被第三者窃取公钥
,
从而出现服务器传送给客户端的信息被监听风险;
由于公钥
可能被窃取,那网络攻击者则可能冒充服务端,将自身的公钥
传输给客户端,从而双向监听和篡改传输数据;
加密过程的问题梳理
从上述两种加密方式看,各自存在优缺点,我们在此节详细分析下;
-
单独使用对称加密
- 优点
加密速度快,网络传输对实时性要求很高,快速的传输有效数据对通信双方至关重要; - 缺点
秘钥
明文传输,易被攻击;
- 优点
-
单独使用非对称加密
- 优点
私钥
可保证其安全性,对客户端到服务器的数据有一定的保护作用; - 缺点
公钥
明文传输,易被攻击;加密速度慢,对网络实时性有影响;
- 优点
-
非对称加密与对称加密混合
非对称加密用来加密对称加密的秘钥,对称加密用来加密数据进行传输;- 优点
对称加密的秘钥
由客户端传输至服务器时有一定的保护作用;
使用对称加密加密数据有利于网络传输的实时性; - 缺点
存在被攻击者冒充
风险;
从上述分析来看,使用非对称加密与对称加密混合
是较优选择,
但存在的问题就是如何保证客户端收到的公钥
是服务端真实发送的,接下来我们将引入证书
的概念;
- 优点
数字证书
数字证书
是由CA机构认证和颁发的含有证书颁发机构、有效期、持有者信息、数字签名、公钥信息的文件;
服务器把数字证书
传输给客户端,客户端验证数字证书
的正确性和有效性,然后从数字证书里获取公钥
,数字证书犹如身份的证明,证明公钥
是对应服务器发放的;
证书颁发机构是层级关系,下级的CA证书由上级CA签名,直至根证书,根证书进行自签名;
数字证书如何保证安全性
数字证书
中包含一份由上级CA机构的私钥
进行加密生成的数字签名
;
数字签名
的生成:
- 首先生成
摘要
摘要
是指将数据进行HASH
运算,得到的HASH值
即为摘要
,一般用MD5
作为Hash函数
; - 根据
摘要
生成数字签名
通过上级CA机构的私钥
对摘要
进行加密生成的即为数字签名
;
数字证书
的生成:
数字证书是由CA机构认证,将证书颁发机构、有效期、持有者信息、数字签名、公钥信息打包的文件,即为数字证书
数字证书
有效性验证:
- 客户端使用上级CA机构的
公钥
解出数字签名
中的摘要A
; - 客户端使用相同的
Hash算法
对数据进行Hash运算
,生成摘要B
; - 客户端对比
摘要A
与摘要B
,如果信息一致,则说明证书有效;
图解证书的生成与验证如下:
图片来源(https://cheapsslsecurity.com/blog/digital-signature-vs-digital-certificate-the-difference-explained/)
总结
数字证书需要去CA机构申请,有了CA机构颁发的证书便可以安全传输公钥
了,
通过数字证书的验证,保证了客户端收到的公钥
的正确性,
从而保证通信双方获取的对称加密秘钥
的私密性,
进而保证通信双方传输的数据的安全性;