freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

CTF| 密码学之流加密
2019-06-04 14:56:06


数据加密概念:

所谓数据加密(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触发器和若干个异或门组成:

组成.webp.jpg

其中,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结构如下图:

下图.webp.jpg

假设在开始时,我们定义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

……

故可以将状态图画出来,如下:

图.webp.jpg

从图可以看出,正好有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

qrcode_for_gh_223e082fe8a7_430.jpg

# CTF # 密码学
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者