在之前的文章中,我们介绍了对称加密中的块加密算法,今天我们来了解一下什么是流加密?

流加密的概况

流加密是对称加密算法的一种,是指加密和解密双方使用相同伪随机加密数据流(pseudo-random stream)作为密钥,明文数据每次与密钥数据流顺次对应加密,得到密文数据流。

流加密解决了对称加密完善保密性的实际操作困难,实践中数据通常是一个位(bit)并用异或(xor)操作加密,伪随机密钥流由一个随机的种子通过算法得到,k作为种子,则G(k)作为实际使用的密钥进行加密解密工作。

为了保证流加密的安全性,PRG必须是不可预测的。弱算法包括glibc random()函数,线性同余生成器(linear congruential generator)等。

流加密

流加密加解密过程

加密过程:首先生成一个对称秘钥,使用用户公钥加密这个对称秘钥后存储在文件头,然后用生成的对称秘钥加密文件数据存储。

解密过程:首先使用自己的私钥解密被加密的对称秘钥,再用该对称秘钥解密出数据原文。

流加密

流加密的类型

流加密的密钥可分为同步流密码和自同步流密码。同步流密码是指密钥流的生成过程是独立的,明文及密文不参与其中;而自同步流密码(也叫异步流密码)中的密文参与到密钥流的生成。

常见的流加密算法

常见的流密码算法包括RC4、ZUC等,其中ZUC算法又被叫做祖冲之算法,是由我国学者自主设计的加密和完整性算法,是我国第一个成为国际密码标准的密码算法。

流加密的缺点

首先流加密属于对称加密,那就有一个密钥交换的问题,也就是加解密双方事先得有一个办法可以安全地交换密钥。但流加密的密钥长度是和明文一样长的,而且只能使用一次,交换的成本相对加密行为来说不低。而且,既然能安全交换密钥,为什么不直接安全交换同样长度的明文呢?

其次,流加密安全性来源于密钥的随机性,也就是伪随机序列的随机性。但前面随机数一文说过,并不存在真随机数。像RC4算法、WEP协议、DVD使用的数据加密协议,由于设计或其他限制,也都存在密钥随机序列在一定条件下重复出现的概率。这些都会影响流加密的安全效果。

流加密

总体来讲,由于本身密钥的使用成本及安全性问题,流加密在实际应用中出现的频率远低于分组加密。但流加密的一些优点,也被分组加密算法所吸收应用,如通过不同的工作模式实现类似流密码算法的特性。

免责声明:素材源于网络,如有侵权,请联系删稿。