数据加密概念:
所谓数据加密(Data Encryption)技术是指将一个信息(或称明文,plain text)经过加密钥匙(Encryption key)及加密函数转换,变成无意义的密文(cipher text),而接收方则将此密文经过解密函数、解密钥匙(Decryption key)还原成明文。加密技术是网络安全技术的基石。(本描述来源百度百科:https://baike.baidu.com/item/数据加密技术/4804539)
常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES;常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用);常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
流加密概念:
在计算机领域中,信息的存储采用二进制(0和1)进行表示,所有的信息都必须转换成计算机的位,以进行存储和操作。比如数字5被表示成二进制为0101,字母A通过ASCII码转换成二进制0100 0001。为了保证计算机二进制数据的保密性,通过加密算法将某些1改变成0,某些0改变成1,这样子的加密算法被叫做流加密算法。
流加密,是对称加密算法的一种,加密和解密双方使用相同伪随机加密数据流(pseudo-randomstream)作为密钥,明文数据每次与密钥数据流顺次对应加密,得到密文数据流。实践中数据通常是一个位(bit)并用异或(xor)操作加密。(本描述来源百度百科:https://baike.baidu.com/item/流加密/15537830)
流加密介绍:
流加密的加密算法核心是按位异或操作,比如字符串”ctf”转换成二进制之后就是011000110111010001100110,使用4位二进制0110作为密钥进行加密。直接将4位的二进制作为一个周期,扩展成01100110011001100110011001100110与原数据二进制等长的二进制串,并和原二进制数据进行按位异或,最终得到的二进制数据00000101000100100000000001101100即为经过流加密后的数据。而如果要解密数据,仅需要再一次将加密后的二进制数据与密钥串进行按位异或,即可得到原数据。
但是由于异或算法的特点,如果多个数据使用同一个密钥串进行加密,攻击者审计都不需要猜测密钥串就能够破解数据。原因如下:
假设A、B两串明文数据,C为加密数据A、B所使用的密钥。加密后的数据A用EA表示(EA = A ⊕ C),加密后的数据B用EB表示(EB = B ⊕ C),符号⊕表示异或操作。
利用相同的值异或结果为0可以得出:
EA ⊕ EB = (A ⊕ C)⊕ (B ⊕ C)= A ⊕ B ⊕ (C ⊕ C)= A ⊕ B
所以等式两边同时异或B即可发现:
EA ⊕ EB ⊕ B = A ⊕ B ⊕ B = A
即:
A = EA ⊕ EB ⊕ B
由上述公式可以推论出,如果多个数据使用同一个密钥串进行加密的情况下,攻击者仅需要再提供一个数据,并且通过相同的方式进行加密,获取对应加密后的数据,即可通过异或关系解密想要破解的数据。故在流加密中,对密钥的安全性要求大,通常的做法是每次发送数据都生成一个随机数列作为密钥流,并且该密钥流不能过短以至于可被暴力破解。在现实通信中,常常使用线性反馈移位寄存器(LFSR)来生成“伪随机”密钥流。
线性反馈移位寄存器(LFSR)的结构如下,由n个D触发器和若干个异或门组成:
其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;n个D触发器最多可以提供2^n-1个状态(不包括全0的状态),为了保证这些状态没有重复,gn的选择必须满足一定的条件。
下面以n=3(3位LFSR),g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图:
假设在开始时,我们定义SEED:D2D1D0=111,那么,当时钟到来时,有:
D2=D1=1,D1=D0 ⊕ D2=0,D0=D2=1,即D2D1D0=101;
同理,又一个时钟到来时,可得
D2=D1=0,D1=D0 ⊕ D2=0,D0=D2=1,即D2D1D0=001
……
故可以将状态图画出来,如下:
从图可以看出,正好有2^3-1=7个状态,不包括全0,当D触发器的个数越多,产生的状态就越多,也就越“随机”。如果将所有的状态的D2位取出,组合成一个序列1100101,以序列为一个周期组成的二进制数据就是LFSR产生的“随机数”,可被用作流加密的密钥流使用。
LFSR常常被通讯设备用作流加密的密钥流生成器。
常见的流加密算法:
在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一。
RC4算法的核心也是密钥流的生成。与LFSR不同的是,RC4采用一个256字节的状态向量S,256字节的暂时向量T,和用户自定义的密钥输入构成。通过自定义的密钥生成暂时向量之后,状态向量S与暂时向量T通过一系列的置换算法产生可用于加密的“随机”密钥流,参与加密。
在本篇文章中,不对RC4进行仔细讲解,如果需要的同学自行研究。
总结:
本期文章就到这里, 欢迎大家补充。
参考链接:
《百度百科》:
https://baike.baidu.com/item/数据加密技术/4804539
https://baike.baidu.com/item/流加密/15537830
《Verilog之LFSR伪随机数》:https://blog.csdn.net/hengzo/article/details/49689725
来源:freebuf.com 2019-06-04 14:56:06 by: 漏斗社区
请登录后发表评论
注册