对称/非对称加密、数字签名、证书
对称/非对称加密、数字签名、证书
本文主要介绍对称/非对称加密、数字签名、证书的概述与优缺点等,相关HTTPS的中的实现可查看应用层协议:HTTPS协议
一、对称加密
概述
对称密钥算法也可以称为私钥加密、共享密钥加密,是密码学中的一类加密算法。顾名思义,这种加密方式用相同的密钥进行加密和解密。
应用
常见的对称加密算法有AES、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC5、RC6、Camellia。
优缺点
优点:对称加密的速度比非对称加密快很多,在很多场合都需要对称加密。
缺点:一切对称加密算法的软肋在于密钥的配送。加密和解密用同一个密钥,发送方必须设法把密钥发送给接收方。如果窃听者有能力窃取密文,肯定也可以窃取密钥,那么再无懈可击的算法依然不攻自破。存在密钥配送问题。
二、非对称加密
概述
非对称式加密也称公开密钥密码学,是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。也就是私钥是钥匙,而公钥是锁,可以把锁公开出去,让别人把数据锁起来发给我;而钥匙一定要留在自己手里,用于解锁。
应用
常见的公钥加密算法有:RSA、ElGamal、Rabin(RSA的特例)、DSA、ECDSA。使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman姓氏首字母缩写而来)是著名的公开秘钥加密算法。
优缺点
优点:一定程度上解决密钥配送的问题
缺点:非对称加密算法也无法确定通信双方的身份,依然会遭到中间人攻击。非对称加密解决了加密安全的问题,但是数据的加密安全只是数据安全的一个方面,数据的真实性同样非常重要。经常可以看到这样的案例,骗子在同学参加四、六级考试的时候,给同学的家长打电话或发短信,声称自己是学校的辅导员,并表示同学病重急需用钱,要求家长汇钱,同学家长汇钱给骗子而遭受巨大损失的情况。这就是数据/信息真实性没有得到足够验证而产生的问题。
三、数字签名
概述
如果某一用户使用他的私钥加密明文,任何人都可以用该用户的公钥解密密文;由于私钥只由该用户自己持有,故可以肯定该文件必定出自于该用户;公众可以验证该用户发布的数据或文件是否完整、中途有否曾被篡改,接收者可信赖这些数据、文件确实来自于该用户,这被称作数字签名
数字签名的作用本来就不是保证数据的机密性,而是证明你的身份,证明这些数据确实是由你本人发出的。
优缺点
优点:数字签名可以一定程度上认证数据的来源。
缺点:无法鉴别别人给你的公钥是不是对的。会不会有中间人冒充,发给你一个它的公钥。
四、公钥证书
概述
证书其实就是公钥 + 签名,由第三方认证机构颁发。引入可信任的第三方,是终结信任循环的一种可行方案。
应用
证书认证的流程大致如下:
1、Bob 去可信任的认证机构证实本人真实身份,并提供自己的公钥。
2、Alice 想跟 Bob 通信,首先向认证机构请求 Bob 的公钥,认证机构会把一张证书(Bob 的公钥以及对其公钥的签名)发送给 Alice。
3、Alice 检查签名,确定该公钥确实由这家认证机构发送,中途未被篡改。
4、Alice 通过这个公钥加密数据,开始和 Bob 通信。
PS:以上只是为了说明,证书只需要安装一次,并不需要每次都向认证机构请求;一般是服务器直接给客户端发送证书,而不是认证机构。
优缺点
优点:有效避免了沟通过程中的信息泄露,成功规避了传统的中间人攻击;
缺点:任何人都可以申请证书,导致存在很多不正规的认证机构证书,这些不正规证书很可能造成安全隐患。