简话密码学3 - 常用加密算法介绍

简话密码学3 - 常用加密算法介绍

  在接触密码学的时候估计大家经常会听到什么RSA、ECDSA、EDDSA、ECDH等,估计一下就被搞懵了,这篇文章主要就是针对于实际常用的一些加密算法做详细的解释。大致按照前面的分类来解释,需要说明的一点就是,实际中一些算法可以同时运用在加密解密、消息验证和数字签名中。

常用的对称加密

  对称加密算法在加密和解密均使用同样的密钥, 这种方式由于通信双方必须使用同样的钥匙,会有以下几个缺点:
  1、密钥管理:由于需要保存和每个通信对象的密钥,使得密钥管理显得困难。比如密钥保存、密钥更改等。
  2、安全性:由于双方使用同一样密钥,这样安全性不能够得到充分的保证。
  但是由于对称加密运算量相对于非对称加密要小很多,使得运算速度快,在实际的应用中,往往是先通过非对称加密或者特定的密钥交换算法来确定通信双方的对称加密密钥,然后再使用对称加密的方式进行安全通信。
  常用的对称加密算法有AES、DES、RC和Blowfish等,其中有基于DES的3DES,RC又分为RC2、RC4和RC5等。本文暂不对这些算法的具体实现做介绍,这类算法网上有较多的资源,有兴趣的可以自己去查看。

常用的非对称加密算法

  对于非对称加密算法,平常会看到非常多,但其实常用的可以分为两类RSA和ECC,即使用大素数因式分解和椭圆曲线求解两类,平常看到的一些算法名称通常是这两类算法的变种或几个算法的结合所得的名字,如ECDSA则是使用ECC对DSA进行数字签名算法的模拟而得来,ECDH-ECDSA则是使用ECC结合作为密钥交换算法,ECDSA作为数字签名算法结合的一套加密方法,搞清楚了这个,再看这些算法的名字,就显得没有那么迷惑了。

​ 非对称加密算法必要重要的有三个应用,加密解密,数字签名,密钥交换,其中这里的加密解密指的是在通信中对内容的加密解密,实际上前面也说了,一般通信内容不会直接使用非对称加密的方式。需要注意的是,一些非对称加密算法仅仅只能用于作数字签名,而一些既可以用于加密解密也可以用作数字签名,密钥交换等。

​ 下面是一些常用算法作简单的总结。

数字签名加密解密
RSA
DSA
ECDSA
EdDSA
Ed25519

RSA ( Rivest-Shamir-Adleman )是第一个公钥密码系统,广泛用于安全数据传输。它的安全性依赖于整数分解,因此永远不需要安全的RNG。与DSA相比,RSA更快地进行签名验证,但生成速度较慢。

DSA (数字签名算法)是数字签名的联邦信息处理标准。它的安全性依赖于离散对数问题。与RSA相比,DSA更快地生成签名,但验证速度较慢。如果使用了错误的数字生成器,可以打破安全性。

ECDSA (椭圆曲线数字签名算法)是DSA的椭圆曲线实现(数字签名算法)。椭圆曲线加密能够提供与具有较小密钥的RSA相对相同级别的安全级别。它还有一个缺点,即DSA对不良RNG敏感。

EdDSA ( Edwards-curve数字签名算法)是一种使用数字签名方案的数字签名方案基于 Schnorr签名的变体Twisted Edwards曲线。签名创建在EdDSA中是确定性的,其安全性基于某些离散对数问题的难以处理性,因此它比DSA更安全。 ECDSA要求每个签名具有高质量的随机性。

Ed25519 是 EdDSA签名方案,但使用SHA-512/256 和 Curve25519 ; OpenSSH v5.7 中引入),计算上比DSA轻,但区别在于除非你的机器具有很低的处理能力,否则很明显。

注:以上五段对于算法的描述为摘抄内容。

常用的消息摘要算法

1 CRC

​ CRC(循环冗余校验)严格的来说应该叫数据校验算法,但是由于其特征和功能与消息摘要算法类似,这里也可以勉强的称作消息摘要算法。包括CRC8、CRC16、CRC32,后面的数字代表这校验值的位数,如CRC32则代表校验值为4个字节。更新版本更多是由于先前的版本不够安全,如现在MD4这些安全性是不如MD5的。

2 MD系列

​ MDx (Message-Digest Algorithm x,消息摘要算法版本x),MD后面跟的数字代表着算法版本,如现在常用的MD5,指的就是第五个版本,

3 SHA系列

​ SHA (Secure Hash Algorithm) 是由美国国家标准技术研究院(NIST)制定的,其中包括SHA1、SHA256,SHA384、SHA512等,SHA后面的数字代表着摘要的bit长度,如SHA256则为32个字节。

4 RIPEMD系列

​ RIPEMD系列是在分析MD4和MD5缺陷的基础上优化而来的,这里不详说。

常用的数字签名算法

​ 如前文中非对称加密算法中所说。

常用的密钥交换算法

​ 密钥交换算法主要用于在双方通信时,通过一定的手段,获取通信中加密消息内容的对称加密密钥,如前文所说,使用RSA也是可以进行密钥交换的,原理大致可以理解为通信的一方使用另一方的公钥对通信密钥加密,由于只有私钥能够解密,因此只有拥有私钥的另一方才能够获取到通信密钥,这就完成了密钥交换。当然实际应用中会做更多的安全考虑。

​ 常见的密钥交换算法有RSA、DH、DHE、ECDH、PSK、SRP等,由于一些密钥交换算法并不具备身份认证功能,所以需要和其他算法配合,从而真正在实际通信中应用,如将DH和RSA结合,使用DH作密钥交换算法,RSA进行签名认证,则被称为DH-RSA算法。这样的算法组合还有很多,当遇到的时候能够知道即可。

以上的内容均为基础知识,未涉及到算法本身的实现,重在对安全算法有个整体的理解。如发现有描述不正确的地方,欢迎指正。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页