freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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 # 密码学
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者