[web安全]常见加密相关算法简介

1.信息摘要算法

  • 数据摘要算法也被称为哈希(Hash)算法或散列算法。
  • 通过相同的摘要算法处理,得到的结果值。
  • 结果不可逆,无法通过结果值推算出算法处理前的数据。
  • 一般用于签名验签。

信息摘要算法严格来说不能说是一种加密算法,因为它是无法通过结果值推算出算法处理前的数据。所以我们都称其为哈希算法或散列算法。
把信息摘要算法理解成提取特征值,其实就能很好理解。原始数据只要有一个字节改变,计算出的MD5值都会大相径庭。例如我们下载安装包时通常都会给出MD5值,只要我们计算下载后的安装包的MD5与官网提供的MD5是否一致,就能知道安装包是否下载不完整或者被恶意篡改等。在这里插入图片描述

消息摘要算法主要分三类:MD(Message Digest,消息摘要算法)、SHA(Secure Hash Algorithm,安全散列算法)和MAC(Message Authentication Code,消息认证码算法)。

1.1 MD家族算法

MD(Message Digest,消息摘要算法)家族,包括MD2,MD4,MD5。

我们上文提到的MD5被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。
但MD5是有可能被碰撞的,意思是原始数据不同,但计算出的MD5一致。就像HashMap中的Hash碰撞,HashMap的Hash碰撞发生概率很大是因为HashMap的范围很小,而MD5是128位长度,碰撞的概率非常之小,但还是会有概率。(墨菲定律[事情如果有可能,只要时间够长,不管这种可能性有多小,它总会发生])
然后就有黑客利用MD5碰撞,来让杀毒软件无法认出木马。通常,杀毒软件都有一个MD5白名单,而黑客就利用这一点,不断的对自己的木马进行修改,直到自己的木马的MD5值刚好和MD5白名单上的一个值一样(例如微信.exe的MD5)。当木马散播出去时,杀毒软件查询到这个木马MD5和微信.exe一样,从而不去检查其中的高风险操作,致使木马成功绕过杀毒软件。
所以MD5算法无法防止碰撞攻击,因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

1.2 SHA家族算法

SHA(Secure Hash Algorithm,安全散列算法),包括SHA-0、SHA-1、SHA-2(SHA-256,SHA-512,SHA-224,SHA-384等)、SHA-3。它是在MD算法基础上实现的,与MD算法区别在于「摘要长度」,SHA 算法的摘要「长度更长,安全性更高」。

  • SHA-0发布之后很快就被NSA撤回,因为含有会降低密码安全性的错误,它是SHA-1的前身。
  • SHA-1在许多安全协议中广为使用,包括TLS、GnuPG、SSH、S/MIME和IPsec,是MD5的后继者。
  • SHA-2包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。它的算法跟SHA-1基本上相似,目前还没有出现明显弱点。
  • SHA-3是2015年正式发布,由于对「MD5出现成功的破解」,以及对SHA-0和SHA-1出现理论上破解的方法,SHA-3应运而生。它与之前算法不同的是,它是可替换的加密散列算法。

SHA-1、SHA-2(SHA-256,SHA-512,SHA-224,SHA-384)等算法是比较常用的,我们来看看跟MD5的对比吧

算法类型摘要长度(bits)最大输入消息长度(bits)碰撞攻击(bits)性能示例(MiB/s)
MD5128无限≤18(发现碰撞)335
SHA-11602^64 − 1<63(发现碰撞)192
SHA-2242242^64 − 1112139
SHA-2562562^64 − 1128139
SHA-3843842^128 − 1192154
SHA-5125122^128 − 1256154

1.3 MAC算法家族

MAC算法 MAC(Message Authentication Code,消息认证码算法),是带密钥的Hash函数。输入密钥和消息,输出一个消息摘要。它集合了MD和SHA两大系列消息摘要算法。

  • MD 系列算法: HmacMD2、HmacMD4 和 HmacMD5 ;
  • SHA 系列算法:HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384 和 HmacSHA512 。

2.对称加密算法

上面我们说的是散列算法,不能称为加密。只有能结果可逆的算法才能称之为加密算法,而加密和解密使用「相同密钥」的加密算法就是对称加密算法。常见的对称加密算法有AES、3DES、DES、RC5、RC6等。

2.1 DES

数据加密标准(英语:Data Encryption Standard,缩写为 DES)是一种对称密钥加密块密码算法。DES算法的入口参数有三个:Key、Data、Mode。

  • Key: 7个字节共56位,是DES算法的工作密钥;
  • Data: 8个字节64位,是要被加密或被解密的数据;
  • Mode: 加密或解密。

2.2 3DES

三重数据加密算法(英语:Triple Data Encryption Algorithm,又称3DES(Triple DES),是基于 DES 的 对称算法,对 一块数据 用 三个不同的密钥 进行 三次加密,强度更高。

2.3 AES

AES,高级加密标准(英语:Advanced Encryption Standard),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。

  • 采用对称分组密码体制,密钥长度为 128 位、 192 位、256 位,分组长度128位
  • 相对于DES ,AES具有更好的 安全性、效率 和 灵活性。

3.非对称加密算法

非对称加密算法需要两个密钥:公钥和私钥。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有用对应的私钥才能解密。主要的非对称加密算法有:RSA、Elgamal、DSA、D-H、ECC。

3.1 RSA算法

  • RSA加密算法是一种非对称加密算法,广泛应用于加密和数字签名
  • RSA算法原理:两个大素数的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
  • RSA是被研究得最广泛的公钥算法,从提出到现在,经历了各种攻击的考验,普遍认为是目前最优秀的公钥方案之一。

3.2 DSA

  • DSA(Digital Signature Algorithm,数字签名算法),也是一种非对称加密算法。
  • DSA和RSA区别在,DSA仅用于数字签名,不能用于数据加密解密。其安全性和RSA相当,但其性能要比RSA好。

3.3 ECC 算法

  • ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学),基于椭圆曲线加密。
  • Ecc主要优势是,在某些情况下,它比其他的方法使用更小的密钥,比如RSA加密算法,提供相当的或更高等级的安全级别。
  • 它的一个缺点是,加密和解密操作的实现比其他机制时间长 (相比RSA算法,该算法对CPU 消耗严重)。

参考资源

  1. 常用消息摘要算法简介:https://cloud.tencent.com/developer/article/1584742
  2. 浅谈常见的七种加密算法及实现:https://juejin.im/post/5b48b0d7e51d4519962ea383#heading-12
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值