说明:本文不会深入探究加密算法,只谈应用。下面这些东西,如果你都了解其作用,本文你对来说帮助不大,没必要在这里浪费时间。(MD5、SHA1、SHA256、DES、3DES、AES、RSA)
1. 常见的加密技术
这些加密技术可以分为3类:
哈希算法(谈不上加密)
对称加密
非对称加密
1.1 哈希算法(MD5/SHA1/SHA256)
哈希算法并不是加密技术,放到这里只是为了让读者更方便理解加密技术的应用案例。Hash是不可逆的,既然不可逆,那么当然不能用来加密,而是用来做内容摘要,也就是内容签名。
MD5:消息摘要算法第五版(1991年提出的),用于产生128位的消息摘要。
SHA1:安全哈希算法,主要用于数字签名算标准里面定义的数字签名算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以验证数据的完整性,若发生变化,摘要会发生变化。
SHA256:算法的哈希值大小为256位,生成256位的消息摘要。
山东大学王小云教授在2004年成功破解了MD5,这里的破解实际上加快了MD5哈希值的碰撞。
1.2 对称加密(DES/3DES/AES)
DES:Data Encryption Standard即数据加密标准,是一种对称加密算法。现在使用的已经不多,如果项目中还在使用,请更换成AES或者更强的非对称RSA加密算法。
AES:Advanced Encryption Standard 高级加密标准,这个标准用来替代原先的DES,可以研究下这个加密模式。 有ECB电子密码本模式、CBC加密块链模式。
特点:
加密解密使用同一个密钥,加密解密速度快(https建立SSL后使用对称加密传输内容)
适合给大数据进行加密
密钥安全性非常重要,千万不能泄密
1.3 非对称加密(RSA)
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
RSA是公开密钥密码的,分为公钥和私钥,公钥任何人都可以知道,公钥私钥之间互相加解密。例如公钥加密->私钥解密,反之亦然。
RSA密钥长度有两种:1024位和2048位,私钥放在服务端,公钥对外开放。
RSA加解密速度比较慢,不易用于大量数据的加密通信。这也是为什么HTTPS在建立连接过程中使用非对称加密技术,建立连接后使用对称加密的原因了。
2. 加密技术应用场景
HTTPS应用
在建立SSL/TLS连接的过程中使用了非对称加密和对称加密技术。主要是因为加解密效率问题:对称加解密快,非对称加解密慢。
API接口安全调用
比较典型的是支付宝在调用网关,在使用HTTPS的基础上,也需要对协议内容进行保护,防止恶意修改交易数据。(其他任何API安全都一样了)
举例说明一次网关请求过程:
网关请求需要对协议体进行签名,首先要获得协议体内容的摘要。
对摘要做非对称加密得出签名。
请求协议体和签名一起发送到支付宝。
支付宝端存有公钥,会完成签名校验,这样就完成了一次网关请求。
数字证书的应用
例如CA证书、OpenVPN登录证书等原理类似,都是综合利用了加密算法的保障。既然是证书,首先我们的客户端要认可证书,为什么证书可信呢?因为证书是专业机构或者组织内绝对可信的人颁发的。
数字签名:签名主要包含两个过程,摘要和非对称加密,首先对需要签名的数据做摘要(类似于常见的MD5)后得到摘要结果,然后通过签名者的私钥对摘要结果进行非对称加密即可得到签名结果。
数字证书:是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、证书名称以及证书授权中心的数字签名。数字证书还有一个重要的特征:只在特定的时间段内有效。
以SSL建立连接过程举例说明:
若非专业搞攻防的,理解到这里就可以很好的利用上面提到的加密技术。我本人不研究算法,仅停留在应用上。 另外,量子力学已经取得不少研究成果,一旦应用起来,上面这些加密技术将不堪一击。
希望本文能够帮到你。感谢您阅读,不足望指正。
閱讀更多 吳濤分享 的文章