前言

去年就想学密码学,但是被大佬博客上的密密麻麻的数学公式给吓到了,就没搞,转头去学pwn了。现在一年了,去年学的pwn也忘完了,但是对pwn也有了基本概念,pwn给我的印象就是 底层+汇编+数据结构

在传统ctf中似乎 就剩Crypto对于我来说还是一团迷雾,最终还是在好奇心的驱使下开始了这篇文章的编写。当然主要原因还是因为这个月相比前几个月闲了一点

学习目标:比较出名的密码算法的实现原理和对应的密码算法安全性问题

数学基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 第一阶段:数学基础(所有密码学的根基)

这些文章构建了后续所有攻击手法的数学语言,务必按顺序阅读。

密码学基础之进制与编码 (2023-07-28)
→ 熟悉二进制、十六进制、Base64等,是处理数据的第一步。

密码学基础之抽象代数基础 (2023-08-04)
→ 群、环、域的基本概念,理解模运算和有限域的基础。

密码学基础之数论四大定理 (2023-08-18)
→ 欧拉定理、费马小定理、中国剩余定理(CRT)、威尔逊定理。RSA的基石。

密码学基础之线性代数Ⅰ (2023-09-06)

密码学基础之线性代数Ⅱ (2023-09-13)
→ 向量、矩阵、基、行列式,为后续格密码和Coppersmith方法打底。

密码学基础之格理论基础 (2023-10-08)

密码学基础之格中难题与格基规约 (2023-10-17)
→ 理解格的基本概念、LLL算法,这是现代密码分析(如HNP、Coppersmith)的核心工具。

🔐 第二阶段:RSA 及其攻击(最经典的公钥密码)

RSA是入门密码攻击的绝佳切入点,以下文章层层递进。

密码学攻击之RSA:初见 (2023-08-23)
→ 从加解密公式到共模、广播、低指数攻击,必读。

密码学学习笔记之RSA的一些套路 (2020-12-18)
→ 更多实用技巧,如已知高位攻击、部分密钥泄露等。

密码学学习笔记之连分数 (2022-11-15)
→ Wiener攻击的数学工具,用于小私钥场景。

密码学学习笔记之coppersmith (2020-08-13)
→ 基于格的方法,解决模多项式小根问题,是RSA高级攻击的利器。

密码学学习笔记之浅析Pollard's rho algorithm及其应用 (2019-11-11)
→ 大整数分解的经典算法,了解即可。

密码学学习笔记之浅析On r-th Root Extraction Algorithm in Fq (2019-12-04)
→ 有限域开根,用于某些RSA变体,可选阅读。

🌐 第三阶段:其他公钥密码体系

拓展视野,了解ECC、同态加密、背包密码等。

密码学学习笔记之NCCIP (2020-05-07)
→ 椭圆曲线密码(ECC)基础与攻击。

密码学学习笔记之paillier cryptosystem (2020-05-14)
→ 加法同态加密方案,理解其数学结构。

密码学学习笔记之knapsack (2020-06-08)
→ 背包密码及其格攻击,经典例子。

🔄 第四阶段:对称密码与分析方法

了解分组密码、流密码以及两种重要的统计分析方法。

密码学学习笔记之分组密码操作模式 (2020-03-03)
→ ECB、CBC、CTR等模式的特点与弱点。

密码学学习笔记之RC4与SM4 (2020-01-30)
→ 流密码(RC4)和国密分组密码(SM4)的简单介绍。

密码学学习笔记之差分分析入门篇——四轮DES (2021-07-16)
→ 差分密码分析在简化DES上的实践。

密码学学习笔记之线性分析入门篇——EzSPN (2021-08-06)
→ 线性密码分析在SPN结构上的应用。

🧠 第五阶段:高级攻击与综合

密码学学习笔记之HNP (2020-05-12)
→ 隐藏数问题(Hidden Number Problem),结合格攻击,是DSA、LCG等场景的利器。

密码学学习笔记之密码学随笔 (2021-01-01)
→ 个人总结,适合在学完主要内容后阅读以梳理体系。

密码学学习笔记之CTF (2020-12-18)
→ CTF中密码题的常见套路与经验分享。

siricee.github.io/hexo-theme-Chic/2019/07/05/MathJax_test/

$f(x)=ax+b$ 这是行内公式.
$$f(x)=ax+b$$ 这是块公式,单独占一行.

$$f(x) = a_1x^n + a_2x^{n-1} + a_3x^{n-2}$$

$$\sideset{^n_k}{^x_y}a$$

$$ \{x*y\} $$ –注:大括号在markdown中已有一次转义,在mathjax中还要再转一次,所以为两个斜杠

$$\lbrace x*y \rbrace$$

$$\left[
\begin{matrix}
V_A \\
V_B \\
V_C \\
\end{matrix}
\right] =
\left[
\begin{matrix}
1 & 0 & L \\
-cosψ & sinψ & L \\
-cosψ & -sinψ & L
\end{matrix}
\right]
\left[
\begin{matrix}
V_x \\
V_y \\
W \\
\end{matrix}
\right] $$