前言
去年就想学密码学,但是被大佬博客上的密密麻麻的数学公式给吓到了,就没搞,转头去学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] $$