密码分类,便于日后密码相关课程的学习时回顾。并且逐步添加新知识
按加密方式不同分为两种:流密码和分组密码
流密码
又名序列密码。明文称为明文流,以序列的方式表示。加密时候,先由种子密钥生成一个密钥流。然后利用加密算法把明文流和密钥流进行加密,产生密文流。流密码每次只针对明文流中的单个
比特位进行加密变换,加密过程所需要的密钥流由种子密钥通过密钥流生成器产生。流密码的主要原理是通过随机数发生器产生性能优良的伪随机序列,使用该序列加密明文流(按比特位加密),得到密文
流。由于每一个明文都对应一个随机的加密密钥,所以流密码在绝对理想的条件下应该是算一种无条件安全的一次一密密码。
加密流程:
-
种子密码->随机数发生器->密钥流
-
明文流->(通过密钥流)->加密变换->密文流
分组密码
分组密码又称块密码。当加密明文时,先把明文变成二进制序列,然后将其变成若干个固定长度的组,不足位用0补全。然后逐个分组依次进行加密操作。
加解密流程:
明文分组m->通过密钥k加密变换->密文分组c->通过密钥k解密变换->明文流分组
按密钥的特征不同分为:对称密码和非对称密码
对称密码
所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。
因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。
常用的对称加密算法:
- DES
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位(实际用了56位,第8、16、24、32、40、48、56、64位是校验位,使每个密钥都有奇数个1),其算法主要分为两步:
(1)初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,然后按照置换表进行换位
(2)逆置换
经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出
- RC4算法
RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密
RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特)
非对称密码
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用
私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法
常用的非对称加密算法:
- RSA
RSA算法的安全性基于RSA问题的困难性,也就是基于大整数因子分解的困难性上
- DSA
DSA是基于整数有限域离散对数难题的,DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不
到
DSA 用于签名,而 RSA 可用于签名和加密。
- ECC
椭圆曲线密码,基于椭圆曲线数学,ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全,160位的椭圆密钥与1024位的RSA密钥安
全性相同。
- ELGmal
ElGamal加密算法可以定义在任何循环群G上。它的安全性取决于G上的离散对数难题
应用场合:
ElGamal加密系统通常应用在混合加密系统中。例如:用对称加密体制来加密消息,然后利用ElGamal加密算法传递密钥。这是因为在同等安全等级下,ElGamal加密算法作为一种非对称密码学
系统,通常比对称加密体制要慢。对称加密算法的密钥和要传递的消息相比通常要短得多,所以相比之下使用ElGamal加密密钥然后用对称加密来加密任意长度的消息,这样要更快一些。
加密算法优劣势比较
非对称加密算法优劣势比较
名称 | 成熟度 | 安全性(取决于密钥长度) | 运算速度 | 资源消耗 |
---|---|---|---|---|
RSA | 高 | 高 | 慢 | 高 |
DSA | 高 | 高 | 慢 | 只能用于数字签名 |
ECC | 低 | 高 | 快 | 低(计算量小,存储空间占用小,带宽要求低) |
对称加密算法优劣势比较
名称 | 密钥长度 | 运算速度 | 安全性 | 资源消耗 |
---|---|---|---|---|
DES | 56位 | 较快 | 低 | 中 |
3DES | 112位或168位 | 慢 | 中 | 高 |
AES | 128、192、256位 | 快 | 高 | 低 |
对称与非对称加密算法优劣势比较
名称 | 密钥管理 | 安全性 | 速度 |
---|---|---|---|
对称算法 | 比较难,不适合互联网,一般用于内部系统 | 中 | 快好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处理 |
非对称算法 | 密钥容易管理 | 高 | 慢,适合小数据量加解密或数据签名 |