加密算法整体可以分为:可逆加密、不可逆加密
可逆加密又可以分为对称加密和非对称加密
对称加密算法,又称为共享密钥加密算法。在数据加密和解密时使用的是同一个密钥,这就导致密钥管理困难的问题。常见的对称加密算法有DES
, 3DES
, AES128
, AES192
, AES256
。其中AES
后面的数字代表的是密钥长度。对称加密算法的安全性相对较低,比较适合内网环境中加解密。
DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加解密用同一算法。
基于DES的加密算法,3DES(即Triple DES)是DES
向AES
过渡的加密算法,它使用3个不同的56位的密钥对一块数据进行三次加密,强度更高。
AES
高级数据加密标准,能够有效抵御已知的针对DES
算法的所有攻击,默认密钥长度为128
位,还可以供选择192
位,256
位。这里顺便提一句这个位指的是bit。
非对称加密算法,又称为公开密钥加密算法。这两个密钥完全不同但又完全匹配,只有使用匹配的一堆公钥和私钥,才能完成对明文的加密和解密过程。常见的非对称加密有RSA
, SM2
等
RSA
加密算法 基于一个十分简单的数论事实:将两个大 素数 相乘十分容易,但想要对其乘积进行 因式分解 却极其困难,因此可以将 乘积 公开作为 加密密钥。
ECC
也是一种 非对称加密算法,主要优势是在某些情况下,它比其他的方法使用 更小的密钥,比如 RSA
加密算法,提供 相当的或更高等级 的安全级别。不过一个缺点是 加密和解密操作 的实现比其他机制 时间长 (相比 RSA
算法,该算法对 CPU
消耗严重)。
常见的不可逆加密算法有MD5
, HMAC
, SHA-1
, SHA-224
, SHA-256
, SHA-384
, 和SHA-512
, 其中SHA-224
、SHA-256
、SHA-384
,和SHA-512
我们可以统称为SHA2
加密算法,SHA
加密算法的安全性要比MD5
更高,而SHA2
加密算法比SHA1
的要高。其中SHA
后面的数字表示的是加密后的字符串长度,SHA1
默认会产生一个160
位的信息摘要。
MD5信息摘要算法(Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。本质上,其就是一种哈希函数,用于对一段信息产生摘要,以防止被篡改。
MD5
算法有以下特点:
MD5
值长度相同,均为128位MD5
值MD5
值也会产生巨大差异MD5
值很难找到相同MD5
的原数据SHA1
是和 MD5
一样流行的 消息摘要算法,然而 SHA1
比 MD5
的 安全性更强。对于长度小于 2 ^ 64
位的消息,SHA1
会产生一个 160
位的 消息摘要。基于 MD5
、SHA1
的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。
HMAC
是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code),HMAC
运算利用 哈希算法 (MD5
、SHA1
等),以 一个密钥 和 一个消息 为输入,生成一个 消息摘要 作为 输出。
发送方和接收方都有密钥来进行计算,没有密钥无法计算出正确的散列值,HMAC
算法更像是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的Hash算法
方法:对称+非对称加密
将HTTPS工作过程简化一下:
生成数字签名:
将一段文本先用Hash函数生成消息摘要,然后用发送者的私钥加密生成数字签名,与原文一起传送给接收者。
校验数字签名:
接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的全部信息产生一个摘要信息,将自己计算得到的摘要信息与收到的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
但是,以上过程要求接收者已知发送方的公钥,但公钥是不能在不安全的网络中直接发送给接收方的,此时就需要引入证书颁发机构CA,CA对发送方的公钥数字签名后生成证书,确保公钥没有被篡改。
数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。
证书使用流程:
参考资料:
https://mp.weixin.qq.com/s/qSQJ04WV4ECIc-cUNeek9g
https://juejin.cn/post/6844903638117122056#heading-10
https://cattail.me/tech/2015/11/30/how-https-works.html