type
status
date
slug
summary
tags
category
icon
password
TEA
描述
TEA算法也算是微型的分组加密算法,实现并不算难,经常在CTF比赛中出现
使用64位(8字节)的明文和128位(16字节)的密钥,常出现为32轮加密(也有64)
使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同,但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 - 1)231」(也就是程序中的0×9E3779B9)
原理(代码展示)
其实内容并不难理解,这里花了点时间搓加密解密脚本,以加强对tea的理解
CTF做题
在CTF逆向题中,经常会遇到魔改TEA,大多都是在32轮循环加密中添加东西
- 逆向其需要抓准逆逻辑、轮加密后的sum、轮加密后的cipher
还有delta,部分题目会藏起tea加密逻辑,并将delta改掉,达到让部分识别加密的工具扫不到tea的目的
XTEA
描述
与tea类似的加密方式,XTEA算法的密钥长度为128位(16字节)。为了提高安全性,可以使用更长的密钥,例如256位(32字节)或512位(64字节)。本文展示的密钥是128位的
XTEA算法中的ROUNDS常量通常为32轮。这个值是通过分析和计算得出的,可以在保证足够安全性的情况下,保持算法的高效性。
对比起tea,有效防范了密钥调度中的相关攻击
原理(代码展示)
其余部分与tea类似,仅展示轮加密部分
对比起tea,xtea中最明显就是k[sum & 3]和k[(sum >> 11) & 3]的操作,让key更安全
CTF中
注意事情与tea解密差距不大
XXTEA
描述
是xtea的升级版,密钥依旧是128位,但是明文可以是32位的任意倍数(最小64位),是目前tea系列中最安全的算法,安全性很高,但是性能有所欠缺
原理
CTF中
XXTEA出题通常魔改更多,注意:
- 逆向时的n取值,进一步也就是轮数的计算
- 加密逻辑中的符号经常被魔改
- do-while外循环和for内循环的参数要仔细分辨
- 其余与tea系列同
- 作者:Sh4d0w
- 链接:https://sh4d0w.life//article/5d8ee141-b764-42f5-b1d6-651403b460ab
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。