加密算法与使用场景总结

happy young...大约 4 分钟技术加密与安全

加密算法与使用场景总结

参考廖雪峰博客,了解基础加密算法的原理。 (https://www.liaoxuefeng.com/wiki/1252599548343744/1255943717668160)open in new window

下面,对这类算法做一下分类总结。

编码算法

URL编码和Base64编码。 可以编码及解码。处理特殊字符。

哈希算法

常用的哈希算法有MD5、SHA-1,SM3等。可用于验证数据完整性,具有防篡改检测的功能;用哈希存储口令时要考虑彩虹表攻击。

基于秘钥的哈希算法

Hmac,可以配合MD5、SHA-1,SM3等哈希算法,计算的摘要长度和原摘要算法长度相同。

对称加密算法

对称加密算法使用同一个密钥进行加密和解密,常用算法有DES、AES和IDEA等。国密4-SM4。
使用对称加密算法需要指定算法名称、工作模式和填充模式。

口令加密(PBE)

通过某种加密算法(确保每次加密之后的结果是一样的即可,不要求能解密),将用户口令先加密成复杂的秘钥,然后使用对称加密方式对待加密数据进行对称加密。解密时也需先将用户口令加密成秘钥,再解密。
先通过用户口令生成秘钥,可以保证数据被脱库之后,被加密数据不被泄露。因为即使黑客知道了加密后的数据和对称加密算法,解密出来的也只是秘钥。黑客无法通过秘钥解出用户口令。

秘钥交换算法(DH算法)

该算法为解决的问题是保证不安全的信道上安全地传输密钥,其可以在双方不直接传递密钥的情况下完成密钥交换。
秘钥交换算法的本质就是双方各自生成自己的私钥和公钥,私钥仅对自己可见,然后交换公钥,并根据自己的私钥和对方的公钥,生成最终的密钥secretKey,DH算法通过数学定律保证了双方各自计算出的secretKey是相同的。
该算法保证了通信在被监听的情况下,监听者无法推导出真正的秘钥;但无法保证中间人攻击,如存在第三方冒充正常通信方的身份,可以达到欺骗双方的目的。这里需要有其他的方式保证身份验证

非对称加密算法

非对称加密就是加密和解密使用的不是相同的密钥:只有同一个公钥-私钥对才能正常加解密。公钥是可以公开的,而私钥是完全保密的。
使用非对称加密算法,和不同的通信方只需要使用同一个秘钥对,免去了协商秘钥的麻烦。不过因为非对称加密运算速度非常慢,加密数据少的缺点,往往需要配合其他对称加密算法共同使用。 其主要使用场景在于传递秘钥口令。
不过使用非对称加密算法也不能防止中间人攻击,其使用方式和秘钥交换算法基本一致。

签名算法

签名算法是非对称加密的反向操作——使用私钥签名,公钥验签。不过在使用中,因为签名的消息比较长,又由于非对称算法运算速度慢,接受方也仅仅使用签名信息做校验,所以往往会先将原始信息做hash。然后对hash值进行签名或验签。对应的签名数字签名算法也总是和hash算法配套。例如MD5withRSA、SHA1withRSA、SHA256withRSA;或者国密系列 Sm3WithSm2

数字证书

在前面的非对称算法里,因为公钥是对外公开的,往往无法保证数据传输双方的身份。有或者网站访问过程中,如何保证访问的网址没有被黑客劫持。这里就得引出数字证书。
数字证书就是集合了多种密码学算法,用于实现数据加解密、身份认证、签名等多种功能的一种安全标准。
数字证书可以防止中间人攻击,因为它采用链式签名认证,即通过根证书(Root CA)去签名下一级证书,这样层层签名,直到最终的用户证书。而Root CA证书内置于操作系统中,所以,任何经过CA认证的数字证书都可以对其本身进行校验,确保证书本身不是伪造的。
以HTTPS协议为例,浏览器和服务器建立安全连接的步骤如下:

  1. 浏览器向服务器发起请求,服务器向浏览器发送自己的数字证书;
  2. 浏览器用操作系统内置的Root CA来验证服务器的证书是否有效,如果有效,就使用该证书加密一个随机的AES口令并发送给服务器;
  3. 服务器用自己的私钥解密获得AES口令,并在后续通讯中使用AES加密。
上次编辑于:
贡献者: Yangxi
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.6