CTF密码学学习思路:从入门到进阶
CTF中的密码学并不完全等同于学术上的密码学,它更侧重于对密码算法原理的理解、经典漏洞的利用以及灵活的思维。其题目类型大致可分为:古典密码、现代密码(对称/非对称)、编码与杂项。
第一阶段:打好基础,熟悉“武器”
这个阶段的目标是熟悉最常见的题型和工具。
-
编码与转换
-
核心思想:这不是加密,只是信息的另一种表示形式。
-
常见类型:
-
Base64/32/16:看到末尾的
=号或字符集特征就要想到。 -
URL编码:
%xx的形式。 -
HTML实体编码:
&#x;或&;的形式。 -
ASCII码:十进制、十六进制的转换。
-
莫尔斯电码:
.-和/。 -
猪圈密码、棋盘密码等。
-
-
学习方法:使用 CyberChef 这个“万能厨房”,它集成了几乎所有编码和基础密码学操作。多做练习,看到奇怪的字符串先尝试各种编码转换。
-
-
古典密码
-
核心思想:手工或机械时代,依赖于替换和移位。
-
常见类型:
-
移位密码:凯撒密码是典型。关键是词频分析。
-
替换密码:单表替换(词频分析)、多表替换(如维吉尼亚密码,可用Kasiski测试法破解)。
-
其他经典:Atbash(镜像)、ROT13(特殊的凯撒)、栅栏密码。
-
-
学习方法:
-
理解每一种密码的加解密原理。
-
使用工具(如CyberChef, quipqiup)进行自动破解,但务必理解工具背后的原理。
-
练习手动进行词频分析,感受其过程。
-
-
本阶段目标:拿到一道题,能迅速识别出是编码还是古典密码,并选择正确的工具或方法解决。
第二阶段:深入现代密码学核心
这个阶段开始接触真正的密码学算法。
-
流密码与分组密码
-
核心思想:理解现代对称加密的基本模型。
-
流密码:
-
典型算法:RC4。
-
常见漏洞:密钥重用。如果两次不同的明文用相同的密钥流加密,异或后可以得到两个明文的异或值,再结合词频分析或已知明文攻击可破解。
-
-
分组密码:
-
典型算法:DES, 3DES, AES。
-
核心概念:工作模式 比算法本身更重要!
-
ECB模式:相同的明文块加密后得到相同的密文块。看图解密题(Tux企鹅图)是经典案例。
-
CBC模式:最常用,但要理解其IV(初始化向量) 和填充Oracle攻击。
-
-
常见攻击:
-
Padding Oracle Attack:CTF高频考点!必须理解其原理和利用工具(如padbuster)。
-
比特翻转攻击:在CBC模式下,篡改前一密文块会影响后一明文块。
-
-
-
-
公钥密码学
-
核心思想:非对称加密,基于数学难题。
-
典型算法:
-
RSA:绝对的重中之重!
-
ElGamal、ECC(椭圆曲线密码,难度较高)。
-
-
RSA必须掌握的知识点:
-
加密、解密、签名的数学公式和过程。
-
各种攻击手段:
-
模数分解:当
n较小时,可用网站(factordb)或工具(yafu)分解。 -
共模攻击:相同的
n,不同的e加密同一消息。 -
低加密指数攻击:
e很小(如3),明文m也很小,导致m^e < n,可直接开方。 -
低解密指数攻击:
d很小,可使用Wiener's Attack。 -
选择密文攻击:Oracle类题目,服务器会告诉你解密结果。
-
广播攻击:相同的
m,用相同的e但不同的n加密。 -
Franklin-Reiter相关消息攻击:两个明文存在某种线性关系。
-
-
密钥格式:熟悉PEM格式,能使用
openssl命令解析公钥私钥。
-
-
本阶段目标:能够识别出题目使用了哪种密码算法,并能根据题目描述(如给出源代码、网络服务)判断出可能的攻击面,并运用脚本(Python + gmpy2/pycryptodome)或工具进行利用。
第三阶段:专项突破与杂项技巧
这个阶段解决一些特定的、需要灵活思维的密码题。
-
哈希与认证
-
哈希碰撞:理解MD5、SHA1的碰撞已不安全。
-
长度扩展攻击:针对Merkle–Damgård结构的哈希函数(如MD5, SHA1, SHA2)。
-
HMAC:基于哈希的消息认证码。
-
-
随机数
-
核心思想:计算机中没有真正的随机,都是伪随机。
-
常见漏洞:种子可预测或过小(如用时间戳做种子),导致随机数序列可被重现。
-
典型题型:MT19937(梅森旋转算法)的预测与逆向。
-
-
隐写术
-
虽然常归为Misc,但与密码学思维相通。
-
图片中:LSB、在文件末尾追加数据、在EXIF中隐藏信息。
-
音频中:频谱图、LSB。
-
工具:
steghide,zsteg,Audacity等。
-
-
编程与数学
-
数学基础:理解模运算、中国剩余定理、离散对数问题。
-
编程能力:Python是必备技能。要熟练使用
pwntools与题目交互,使用gmpy2处理大数运算,使用pycryptodome库实现各种加解密操作。
-
第四阶段:实践、资源与心法
-
练习平台
-
入门:
CTFlearn,OverTheWire -
进阶:
CryptoHack(强烈推荐! 专为CTF密码学设计,交互式学习),picoCTF -
实战:各大CTF比赛的历年真题(如CTFtime.org上列出的比赛),特别是
De1CTF,RCTF,0CTF等高质量赛事。
-
-
必备工具集
-
CyberChef: Web端,编码/古典密码/哈希一站式解决。
-
Python3 + 库:
pwntools,gmpy2,pycryptodome,requests。 -
RSA/数学工具:
yafu,RsaCtfTool,sageMath(解决复杂数学问题的神器)。 -
通用工具:
openssl命令行。
-
-
学习心法
-
从WP开始:遇到完全不会的题,不要死磕。看别人的Writeup,理解解题思路和用到的新知识,然后自己复现一遍。
-
学会识别:通过题目描述、附件(源代码、密文、公钥文件等)快速给题目分类,缩小攻击范围。
-
举一反三:一个知识点(如RSA的共模攻击)可能会以各种形式出现,要掌握其本质。
-
保持好奇:密码学充满乐趣和挑战,享受破解谜题带来的成就感。
-
