CTF Crypto基础知识
0x01 密码学
本质: 密码学的首要目的是隐藏信息的涵义,而并不是隐藏信息的存在,这是密码学与隐写术的一个重要区别。
密码学的发展大概经历了三个阶段:
- 古典密码阶段(
1949
年以前)。 - 近代密码阶段 (
1949-1975
年),香农信息论,提出 “混淆与扩散” 准则,为对称密码(如DES
)提供设计框架 - 现代密码阶段(
1976
年至今) ,公钥密码革命(Diffie-Hellman
),解决密钥分发问题,但并未否定香农理论(对称密码仍基于此发展)。
密码学分为两个方式:
- 古典密码
- 现代密码
古典密码
核心特征:基于纸笔/机械、无数学理论支撑
特点: 手工操作、数学简单、易受统计攻击
常见题型: 替换、移位、组合密码
古典密码之替换密码
替换密码的核心思想是用一个字符替换另一个字符,形成密文。明文和密文的字符集通常相同(如都使用 26
个英文字母),但字符之间的映射关系是预先设定的(可以是固定的,也可以是动态变化的)。
单表替代:所有字符用同一映射表替换。
凯撒密码(Caesar Cipher
):字母表整体移位 n
位(如 A→D,B→E,n=3
)。
仿射密码(Affine Cipher
):通过线性变换公式(如 y = (ax + b) mod 26
,a
和 b
为密钥)替换字符。
阿托巴希密码(Atbash Cipher
):字母表反转(A→Z,B→Y,…,M→N
)。
多表替代:使用多个映射表,降低频率特征暴露风险。
维吉尼亚密码(Vigenère Cipher
):通过关键词循环决定每一位的移位量。
博福特密码(Beaufort Cipher
):维吉尼亚的变体,加密公式不同。
希尔密码(Hill Cipher
):将字符转化为数字,通过矩阵乘法进行多字符批量替换(线性代数加密的早期形式)。
凯撒密码是一种替换密码,将明文中的 每个字母 都按照其在字母表中的顺序向后(或向前)移动固定数目(一般位移三位)作为密文。凯撒密码只能加密英文。
密文:iodj{ehoor zrua}
明文:flag{hello word}
可以用数学方式取模运算
对于每个明文字母 p,其密文字母 c的计算公式为:
c=(p+k)mod26
其中:
p是明文字母在字母表中的位置(0-25),例如 A=0, B=1, ..., Z=25。
k是偏移量(密钥),通常为整数。
mod26 确保结果在 0-25 范围内,形成循环替换。
维吉尼亚密码使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式
- 明文:
come greatwall
密钥:crypto
- 密文:
efkt zfgrrltzn
古典密码之移位密码
移位密码(又称置换密码)的核心思想是不改变字符本身,只改变字符在明文中的位置,通过重新排列字符顺序形成密文。
- 列移位密码:按固定长度分组后,按列顺序重排(如按列号
3→1→2
读取)。 - 栅栏密码(
Rail-fence Cipher
):将明文按 “栅栏” 分层排列,再按行拼接(如2
层栅栏:第1、3、5
… 位字符为第一层,第2、4、6
… 位为第二层)。 - 周期移位密码:按固定周期交换字符位置(如每
3
位字符反转一次:123→321
)。
栅栏密码(Rail Fence Cipher
)是一种经典的移位密码,通过将明文按特定方式重新排列来加密。其名称来源于其排列方式类似于栅栏的形状。
明文:The quick brown fox jumps over the lazy dog
密文:tioxstz hcwkohy eknuved qbfmelo uroprag
现代密码
核心特征:基于数学难题、算法标准化、计算安全
- 现代对称密码 (
Symmetric Cryptography
)- 特点: 加解密用同一密钥、速度快、适合大数据
- 常见算法:
AES, DES, 3DES, RC4
- 非对称密码 (
Asymmetric Cryptography
)- 特点: 公钥加密 + 私钥解密、解决密钥分发
- 常见算法:
RSA, ECC, Diffie-Hellman
现代密码之对称加密
特点:加密和解密使用相同的密钥和相同的算法
优点:速度快、安全、紧凑(加密后长度几乎不增加)
缺点:
- 密钥数量是参与者数量的指数增长
- 数量过多带来的管理和存储问题
- 不支持数字签名和不可否认性
- 密钥如何安全的传递给可信任的对等体是个关键的问题
现代密码之非对称加密
特点:加密和解密使用不同的秘钥(一个秘钥加密,只能用另一个秘钥解密)
优点:安全。不担心密钥被中途截获的问题(不发送私钥);不需要事先在各参与者之间建立关系以交换密钥。技术上支持数字签名和不可否认性。
缺点:速度非常慢(比对称加密算法慢1500倍),密文长度会显著增加。——所以仅用于做密钥交换,数字签名
哈希函数 (Hash Functions)
特点: 不可逆、固定输出、雪崩效应
常见算法:MD5, SHA-1, SHA-256
- 碰撞攻击
(Collision)
: 找$H(M1) = H(M2)$
- 工具:
hashclash
(MD5/SHA-1
碰撞)
- 工具:
- 长度扩展攻击: 已知
H(secret+data)
构造H(secret+data+padded+malicious)
- 工具:
hash_extender
- 工具:
- 彩虹表爆破: 针对无盐哈希
- 工具:
hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?l
- 工具:
- 密码爆破: 弱口令字典攻击
- 工具:
john --format=raw-md5 hashes.txt
- 工具:
0x02 编码技术
编码技术与密码学有紧密关联但不属于密码学范畴,两者是互补而非包含的关系。
- 编码:可逆转换,无密钥概念(如
Base64
) - 加密:需要密钥才能反转(如
AES
)
编码技术的核心作用
- 数据伪装:将敏感信息转换为无害格式
- 格式兼容:适应不同传输协议(如
HTTP
只支持文本) - 信息隐藏:作为隐写术的载体
- 混淆干扰:增加题目分析难度
常见编码:base、hex、binary、URL、unicode、Morse、ascii
等
Base64 编码
原理:将3
字节(24
位)数据拆分为4
个6
位单元,映射到64
字符集
字符集:A-Za-z0-9+/=
(=
用于填充)
识别特征:
- 长度是
4
的倍数 - 结尾常带
=
(1
或2
个) - 无其他的特殊字符
URL编码
原理:不安全字符转为%
后跟两个十六进制数字
字符集:%XX
格式(XX
为Hex
值)
识别特征:
- 包含大量%符号
- 常见于HTTP请求
摩斯电码
原理:用点(Dot)
、划(Dash)
和停顿表示字符的通信系统
识别特征:
- 具有
.
与-
的字符组合 - 有规律的停顿
CTF中的编码技术
CTF
编码技术题目常以趣味化、“魔改” 或结合特定文化符号的形式出现
- 社会主义核心价值观编码
- 与熊论道
- 与佛论道
- 五笔编码
- 键盘编码
FuckJS
编码- 盲文
Brainfuck
- 麻将 / 扑克牌编码
https://www.jerde.net/peter/cards/cards.html
编码https://www.jerde.net/peter/cards/decards.html
解码
很多编码不想去找了,学过的知识也不想再重复写了,以后再碰到了再顺手更吧,期待找到麻将编码的时候,哈哈哈